如何在 C++ 中动态创建向量
How to create vectors dynamically in C++
我正在尝试根据用户输入来初始化向量。例如,如果用户提供 n=4
那么我必须创建 4 个不同大小的向量。
至于向量语法是:
vector<int> v1(x);
因此,类似地,我想创建 v2
、v3
和 v4
命名向量。
我很困惑。我怎样才能做到这一点 ?
各个向量的名称 v1
、v2
、v3
、...在编译时定义。如果你想有一个动态数量的向量,你需要 vector
的 vector
s,例如:
std::vector<std::vector<int>> vs;
或者如果你已经知道你想要的向量数量 n:
std::vector<std::vector<int>> vs(n);
那么,您可以使用 vs[0]
、vs[1]
、vs[2]
,而不是 v1
、v2
、v3
,并且您的代码可以动态使用向量 v[i]
,其中 i
是变量或表达式。
您可以使用 emplace_back
/push_back
或 resize
:
添加矢量到 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 个元素。
我正在尝试根据用户输入来初始化向量。例如,如果用户提供 n=4
那么我必须创建 4 个不同大小的向量。
至于向量语法是:
vector<int> v1(x);
因此,类似地,我想创建 v2
、v3
和 v4
命名向量。
我很困惑。我怎样才能做到这一点 ?
各个向量的名称 v1
、v2
、v3
、...在编译时定义。如果你想有一个动态数量的向量,你需要 vector
的 vector
s,例如:
std::vector<std::vector<int>> vs;
或者如果你已经知道你想要的向量数量 n:
std::vector<std::vector<int>> vs(n);
那么,您可以使用 vs[0]
、vs[1]
、vs[2]
,而不是 v1
、v2
、v3
,并且您的代码可以动态使用向量 v[i]
,其中 i
是变量或表达式。
您可以使用 emplace_back
/push_back
或 resize
:
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 个元素。