我想创建一个内部维度的初始化大小为10的向量,外部维度可以具有动态增长的任何大小:
std::vector<std::vector<int>>;
内部的初始大小必须为10.这可能吗?
答案 0 :(得分:4)
可以将内部向量的大小初始化为10:
std::vector<std::vector<int>> foo(n, // will contain n inner vectors
std::vector<int>(10)); // each inner vector has size 10 initially
答案 1 :(得分:0)
当你使用向量向量时,内向量本质上也是动态的。您只需在定义内部向量时声明并初始化它,然后将其推送到外部向量。
const int col_size = 10;
vector<vector<int> > table;
vector<int> row(col_size, 0);
table.push_back(row);
下面的代码定义了一个大小为n * m且填充为0的数组:(注意这不会限制将来附加的向量的维度)
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;
答案 2 :(得分:0)
正如其他人一样,提到使用向量时你可能不必担心分配/解除分配,如果需要,std :: vector可以增加它们的大小。如果你想使用fixed(一些固定的,如果推出一些新元素会改变哪些)你可以使用的大小矢量可以使用 std :: vector :: reserve
预留插槽