0

我一直在尝试创建一个二维向量数组。这是我正在做的一个例子。

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 个元素将始终是第一行的元素。所以索引不会让你回到你期望的元素。

与其推回临时向量<>,然后将其推入外部向量<>,不如将向量<>的大小保留在循环之外,并直接存储在内部循环中。

于 2012-12-09T17:30:15.487 回答
0

究竟是什么不工作?你可能会得到一些意想不到的价值,因为你创造了一个不断增长的temp_vec_tile. 您可能希望在将其插入外部向量后截断它,例如,使用clear().

于 2012-12-09T17:31:35.697 回答