问题描述
在某些情况下,仅以下行有效。
In some cases only the below line works.Why so?
vector< vector<int>> a(M,N);
在每种情况下都可以使用。
This works in every case.
vector< vector<int>> a(M, vector<int> (N));
有什么区别?
推荐答案
std :: vector
具有fill构造函数,该构造函数创建n个元素的向量并填充指定的值。 a
具有类型 std :: vector< std :: vector< int>>
向量的向量。因此,用于填充向量的默认值是向量本身,而不是 int
。因此,第二个选项是正确的。
std::vector
has a fill constructor which creates a vector of n elements and fills with the value specified. a
has the type std::vector<std::vector<int>>
which means that it is a vector of a vector. Hence your default value to fill the vector is a vector itself, not an int
. Therefore the second options is the correct one.
std :: vector< std :: vector< int>> array_2d(rows,std :: vector< int>(cols,0));
这将创建一个行* cols二维数组,每个数组元素为0。默认值为 std :: vector< int>(cols,0)
,这意味着每一行的向量都具有 cols
元素个数,每个为0。
This creates a rows * cols 2D array where each element is 0. The default value is std::vector<int>(cols, 0)
which means each row has a vector which has cols
number of element, each being 0.
这篇关于声明2D向量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!