我正在尝试根据用户输入初始化 vector 。例如,如果用户提供n=4
,则必须创建4个大小不同的 vector 。
至于 vector 语法是:
vector<int> v1(x);
因此,类似地,我想创建名为vectors的
v2
,v3
和v4
。我很困惑。我怎样才能做到这一点 ?
最佳答案
各个 vector v1
,v2
,v3
,...的名称在编译时定义。如果您想获得动态数量的 vector ,则需要vector
的vector
,例如:
std::vector<std::vector<int>> vs;
或者,如果您已经知道想要的 vector n的数量,则:
std::vector<std::vector<int>> vs(n);
然后,代替使用
v1
,v2
,v3
,可以使用vs[0]
,vs[1]
,vs[2]
,并且您的代码可以动态使用 vector v[i]
,其中i
是变量或表达式。您可以使用
vs
/ emplace_back
或push_back
将 vector 添加到resize
中:vs.emplace_back();
//or
vs.push_back({});
// or
vs.push_back(std::vector<int>());
// or
vs.resize(4);
在后一种情况下,
vs
将包含四个空 vector (如果vs已具有四个以上 vector ,则前四个 vector 将存在)。您可以像往常一样将元素添加到内部 vector 中,例如:
vs[0].push_back(42);
vs[2].resize(x);
之后,第一个 vector 的长度为1,第三个 vector 的长度为
x
。或者,您可以在最后一个 vector 之后直接插入一个大小为
x
的 vector :vs.emplace_back(x);
// or
vs.push_back({x});
// or
vs.push_back(std::vector<int>(x));
然后可以使用双索引访问元素,例如
vs[1][14]
读取第二个 vector 的第15个元素。
关于c++ - 如何在C++中动态创建 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59800481/