在某些情况下,只有下面的行有效。为什么?
vector< vector<int>> a(M,N);
这适用于所有情况。
vector< vector<int>> a(M, vector<int> (N));
有什么不同?
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。
为了声明2D矢量,我们必须首先定义大小等于所需2D矢量的行数的1D阵列。我们想要创建一个k行和m列的向量
"vector<vector<int>> track(k);"
这将创建一个大小为k的向量。然后使用resize方法。
for (int i = 0; i < k; i++) {
track[i].resize(m);
通过这种方式,您可以声明2D矢量