c++ - 声明一个二维 vector

标签 c++ vector stl

在某些情况下,只有以下行有效。为什么会这样?

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/

相关文章:

c++ - 优化 vector<string> 中不必要的字符串复制

arrays - JavaScript 的数组扩展运算符在 Rust 中的等价物是什么?

string - 如何将字符串列表拆分为 R 中的奇数和偶数元素

c++ - 关于 std::vector 的两个简短问题

C++:带有对象指针的优先级队列不能正常工作

c++ - IEEE 754/IEC 559

c++ - 如何在 C++ 中的 while 循环中存储先前的迭代?

c++ - 在没有new的情况下在堆上创建一个对象

c++ - 如何将字符串转换为其 unicode 转义符?

c++ - x265 编码器 : order of values in 'planes' array