在某些情况下,只有下面一行有效。为什么?
vector< vector<int>> a(M,N);
这适用于所有情况。
vector< vector<int>> a(M, vector<int> (N));
有什么区别?
答案 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向量