0

ベクトルの 2D 配列を作成しようとしています。これが私がやっていることの例です。

struct TILE {
    int a;
};

TILE temp_tile;

std::vector<TILE> temp_vec_tile;
std::vector<std::vector<TILE>> tile;


for (int x = 0; x < 10; x++) {
    for (int y = 0; y < 10; y++) {

    temp_tile.a = x;
    temp_vec_tile.push_back(temp_tile);
    }
    tile.push_back(temp_vec_tile);
}

// Why does this not work? 

int x = tile[3][5].a;

誰でも私を修正できますか。うまくいかない理由を教えてください。

4

2 に答える 2

2

行間の temp_vec_tile をクリアしないので、成長し続けるだけです...

したがって、すべての行ベクトルに 10 個の要素がある代わりに、最初に 10 個、次の 20 個、次に 30 個というようになります。最初の 10 個の要素は常に最初の行の要素になります。したがって、インデックスを作成しても、期待する要素は返されません。

temp vector<> にプッシュしてから、それを外側の vector<> にプッシュする代わりに、ループの外側で vector<> のサイズを予約して、内側のループに直接格納することができます。

于 2012-12-09T17:30:15.487 に答える
0

正確に何が機能していないのですか?ますます大きくなるtemp_vec_tile. を使用して、外部ベクトルに挿入した後に切り捨てたい場合がありclear()ます。

于 2012-12-09T17:31:35.697 に答える