如何在 C++ 中动态创建向量

How to create vectors dynamically in C++

我正在尝试根据用户输入来初始化向量。例如,如果用户提供 n=4 那么我必须创建 4 个不同大小的向量。 至于向量语法是:

vector<int> v1(x);

因此,类似地,我想创建 v2v3v4 命名向量。

我很困惑。我怎样才能做到这一点 ?

各个向量的名称 v1v2v3、...在编译时定义。如果你想有一个动态数量的向量,你需要 vectorvectors,例如:

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

或者如果你已经知道你想要的向量数量 n:

std::vector<std::vector<int>> vs(n);

那么,您可以使用 vs[0]vs[1]vs[2],而不是 v1v2v3,并且您的代码可以动态使用向量 v[i],其中 i 是变量或表达式。

您可以使用 emplace_back/push_backresize:

添加矢量到 vs
vs.emplace_back();

//or

vs.push_back({});

// or

vs.push_back(std::vector<int>());

// or

vs.resize(4);

在后一种情况下,vs 将包含四个空向量(如果 vs 已经有超过 4 个向量,则包含前 4 个现有向量)。

并且您可以像往常一样向内部向量添加元素,例如:

vs[0].push_back(42);

vs[2].resize(x);

之后第一个向量的长度为 1,第三个向量的长度为 x

或者您可以直接在最后一个向量之后插入一个大小为 x 的向量:

vs.emplace_back(x);

// or

vs.push_back({x});

// or

vs.push_back(std::vector<int>(x));

然后可以使用双索引访问元素,例如

vs[1][14]

读取第 2 个向量的第 15 个元素。