调整2D矢量的内部尺寸

时间:2015-09-07 07:18:09

标签: c++ vector

我想创建一个内部维度的初始化大小为10的向量,外部维度可以具有动态增长的任何大小:

std::vector<std::vector<int>>;

内部的初始大小必须为10.这可能吗?

3 个答案:

答案 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

预留插槽