我正在尝试在向量中获取特定元素。例如,
可以说我有一个向量。
std::vector<Tile> TileList;
向量的大小 MAP_HEIGHT = 30, MAP_WIDTH = 200 所以它的总大小是 MAP_HEIGHT * MAP_WIDTH = 6000。我使用双嵌套 for 循环来迭代并创建一个充满瓷砖的向量。
for(int Y = 0; Y < MAP_HEIGHT; Y++)
{
for(int X = 0; X < MAP_WIDTH; X++)
{
Tile TempTile;
fscanf(FileHandle, "%d:%d ", &TempTile.TileID, &TempTile.TypeID);
TileList.push_back(TempTile);
}
}
现在我的问题是可以说我遍历
int ID = 0;
for(int Y = 0; Y < MAP_HEIGHT; Y++)
{
for(int X = 0; X < MAP_WIDTH; X++)
{
TileList[ID].do stuff with it
//Check for the tile above this tile
// Find a way to calculate the ID of the tile above this tile
int IDoftilabove = ID - do something;
if(TileList[IDoftilabove].variable == TILE_SOMETHING)
{
do stuff
}
ID++;
}
如何根据我所在的当前元素计算向量内的上述元素的 ID(技术上在此 ID 之前)。
插图:假设我有一个 5x5 的矩阵,假设我的当前 ID 是 8。所以我在第二行第 3 行。
1 2 *3* 4 5
1 2 (3) 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
现在我想要向量中直接在我上方的元素的 ID,即 ID 3,第一行号 3。这只是假设 MAP_WIDTH = 5 和 MAP_HEIGHT = 5。