使用矢量创建2D数组

时间:2012-12-09 17:26:50

标签: c++ vector

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

任何人都可以纠正我。告诉我它为什么不起作用。

2 个答案:

答案 0 :(得分:2)

你不清楚行之间的temp_vec_tile,所以它会继续增长......

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

您可以在循环外部保留向量&lt;&gt;的大小,而不是将其推回到临时向量&lt;&gt ;,然后将其推入外部向量&lt;&gt;中,而是直接存储在内部向量中循环。

答案 1 :(得分:0)

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