使用矢量创建二维阵列

Creating 2D arrary using vector

本文关键字:二维 阵列 创建      更新时间:2023-10-16

我一直在尝试创建一个向量的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;

有人能纠正我吗?告诉我为什么它不起作用。

您没有清除行之间的temp_vec_tile,所以它只会继续增长。。。

所以不是你的行向量都有10个元素,第一个元素有10个,接下来是20个,然后是30个,等等。前10个元素总是第一行的元素。因此,索引不会让您返回所期望的元素。

不是推回到温度向量<>中,然后将其推到外部向量<>中,您可以保留向量的大小<>s在循环之外,并直接存储在内部循环中。

什么东西不起作用?由于创建了一个不断增长的temp_vec_tile,您可能会得到一些意外的值。您可能希望在将其插入外部向量后截断它,例如,使用clear()