初始化2D矢量

sad*_*sad 24 c++ stl vector

这两种声明2D矢量的方式有什么区别.

vector< vector<int>> a(M,N);
Run Code Online (Sandbox Code Playgroud)

vector< vector<int>> a(M, vector<int> (N));
Run Code Online (Sandbox Code Playgroud)

我尝试过,但我觉得第一个容易理解.

a_p*_*han 42

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.