声明2D矢量

时间:2015-02-22 21:11:23

标签: c++ vector stl

在某些情况下,只有下面一行有效。为什么?

vector< vector<int>> a(M,N);

这适用于所有情况。

vector< vector<int>> a(M, vector<int> (N));

有什么区别?

2 个答案:

答案 0 :(得分:40)

std::vector有一个填充构造函数,它可以创建n个元素的向量,并使用指定的值填充。 a的类型为std::vector<std::vector<int>>,这意味着它是向量的向量。因此,填充向量的默认值是向量本身,而不是int。因此,第二个选项是正确的。

std::vector<std::vector<int>> array_2d(rows, std::vector<int>(cols, 0));

这将创建一个行* cols 2D数组,其中每个元素为0.默认值为std::vector<int>(cols, 0),这意味着每行都有一个向量,其中包含cols个元素,每个元素为0。

答案 1 :(得分:1)

要声明2D向量,我们必须首先定义大小等于所需2D向量的行数的1D数组。 我们要创建一个由k行和m列组成的向量

 "vector<vector<int>> track(k);"

这将创建一个大小为k的向量。然后使用调整大小方法。

for (int i = 0; i < k; i++) {
    track[i].resize(m);

通过这种方式,您可以声明2D向量