在某些情况下,只有以下行有效。为什么会这样?
vector< vector<int>> a(M,N);
这在任何情况下都有效。
vector< vector<int>> a(M, vector<int> (N));
有什么区别?
最佳答案
std::vector
有一个填充构造函数,它创建一个包含 n 个元素的 vector 并用指定的值填充。 a
类型为 std::vector<std::vector<int>>
这意味着它是 vector 的 vector 。因此,填充 vector 的默认值是 vector 本身,而不是 int
.因此,第二个选项是正确的。
std::vector<std::vector<int>> array_2d(rows, std::vector<int>(cols, 0));
这将创建一个 rows * cols 二维数组,其中每个元素为 0。默认值为 std::vector<int>(cols, 0)
这意味着每一行都有一个具有 cols
的 vector 元素个数,每个为0。
关于c++ - 声明一个二维 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28663299/