ベクトル内の特定の要素を取得しようとしています。例えば、
ベクトルがあるとしましょう。
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であるとしましょう。したがって、2番目の行番号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 3、最初の行番号3である、私の真上にあるベクトル内の要素のIDが必要です。これは、MAP_WIDTH=5およびMAP_HEIGHT=5を想定しているだけです。