我熟悉STL载体。但是,我想知道当我初始化一个像下面的向量时调用哪个构造函数以及它做了什么:
int nx=5;
int ny=7;
std::vector<int> myvec[nx][ny];
更新: 我用TDM-GCC 4.9.2编译了代码,但显然它需要用&#34; const int&#34;来初始化。对于其他一些编译器,所以我在这里重写它:
#include <iostream>
#include <vector>
using namespace std;
int main(){
std::vector<int> myvec[7][9];
return 0;
};
感谢。
答案 0 :(得分:3)
答案 1 :(得分:2)
请注意,变量nx
和ny
需要const
限定,因为变长数组不是标准C ++。
但是,当将这些变量更改为const int
时,这将声明一个包含5行和7列默认初始化std::vector<int>
实例的2D数组,这样2D数组的每个元素最初都是int
类型的空向量。
虽然这就是它的作用,但并不是说你应该做这样的事情 - {C}风格的std::vector
对象数组是一个奇怪的结构。如果你想要一个固定矩阵,其中每个元素都是std::vector
,那么请使用以下代码(例如):
std::array<std::array<std::vector<int>, 7>, 5> mtx_vec;