我想创建一个内部维数初始值为10的向量,外部维数可以是任意大小,可以动态增长:
std::vector<std::vector<int>>;
inner的初始大小必须为10。
可以将内部向量的大小初始化为10:
std::vector<std::vector<int>> foo(n, // will contain n inner vectors
std::vector<int>(10)); // each inner vector has size 10 initially
当你使用向量的向量时,内部向量本质上也是动态的。只需在定义内部向量时声明并初始化它,然后将其压入外部向量。
const int col_size = 10;
vector<vector<int> > table;
vector<int> row(col_size, 0);
table.push_back(row);
下面的代码定义了一个大小为n*m并以0填充的数组:(注意这并不限制以后添加的vector的维数)
const int m = 5, n = 4;
vector<vector<int> > arr(n, vector<int>(m,0));
另一种方法是使用静态类型定义自己的内部维度结构:
const int col_size = 3;
struct Row {
int val[col_size];
// to behave like an array.
int operator[](int x) { return val[x]; }
};
vector<Row> table;
正如其他人在这里提到的,当使用vector时,您可能不必担心分配/取消分配,std::vector可以在需要时增加它们的大小。如果你想使用固定大小的vector对象,你可以使用std::vector::reserve