1 c++ arrays initialization vector c++11
我正在尝试根据用户输入初始化向量。例如,如果用户提供,n=4那么我必须创建 4 个不同大小的向量。至于向量语法是:
vector<int> v1(x);
Run Code Online (Sandbox Code Playgroud)
所以,同样我想创建v2,v3和v4命名向量。
我很迷惑。我怎样才能做到这一点 ?
各个向量的名称v1, v2, v3, ... 在编译时定义。如果你想有载体的动态数字,你需要vector的vectorS,如:
std::vector<std::vector<int>> vs;
Run Code Online (Sandbox Code Playgroud)
或者如果您已经知道您想要的向量数 n:
std::vector<std::vector<int>> vs(n);
Run Code Online (Sandbox Code Playgroud)
然后,而不是使用v1,v2,v3,你会使用vs[0],vs[1],vs[2],和你的代码可以动态地使用向量v[i]这里i是一个变量或表达式。
您可以vs使用emplace_back/push_back或将向量添加到resize:
vs.emplace_back();
//or
vs.push_back({});
// or
vs.push_back(std::vector<int>());
// or
vs.resize(4);
Run Code Online (Sandbox Code Playgroud)
在后一种情况下,vs将包含四个空向量(如果 vs 已经有超过 4 个向量,则为前 4 个现有向量)。
您可以像往常一样向内部向量添加元素,例如:
vs[0].push_back(42);
vs[2].resize(x);
Run Code Online (Sandbox Code Playgroud)
之后,第一个向量的长度为 1,第三个向量的长度为x。
或者您可以x在最后一个向量之后直接插入一个具有大小的向量:
vs.emplace_back(x);
// or
vs.push_back({x});
// or
vs.push_back(std::vector<int>(x));
Run Code Online (Sandbox Code Playgroud)
然后可以使用双索引访问元素,例如
vs[1][14]
Run Code Online (Sandbox Code Playgroud)
读取第二个向量的第 15 个元素。
| 归档时间: |
|
| 查看次数: |
251 次 |
| 最近记录: |