调整2D矢量的内部尺寸

  • 本文关键字:内部 2D 调整 c++ vector
  • 更新时间 :
  • 英文 :


我想创建一个内部维数初始值为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

最新更新