c++ - 如何在C++中动态创建 vector

标签 c++ arrays c++11 vector initialization

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

vector<int> v1(x);

因此,类似地,我想创建名为vectors的v2v3v4

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

最佳答案

各个 vector v1v2v3,...的名称在编译时定义。如果您想获得动态数量的 vector ,则需要vectorvector,例如:

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

或者,如果您已经知道想要的 vector n的数量,则:
std::vector<std::vector<int>> vs(n);

然后,代替使用v1v2v3,可以使用vs[0]vs[1]vs[2],并且您的代码可以动态使用 vector v[i],其中i是变量或表达式。

您可以使用vs / emplace_backpush_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/

相关文章:

c++ - BHO/ATL/COM 中的线程。 Winapi 还是其他什么?

c++ - 提高 C++ 的性能

c++ - 从 std::vector 创建/填充 std::set 的 STL 方式

c++ - GDB 回溯消息 "0x0000000000000000 in ?? ()"是什么意思?

c++ - 如何在可变参数方法中获取所有参数?

arrays - 为什么我可以将此视为引用并将其视为标量来打印?

javascript - 使用 .remove() 删除数组中的所有元素

c++ - 隐式转换运算符

c++ - 在 gtk 绘图区域中单击时选择绘制的线条

java - CodenameOne 如何检查字符串是否包含子字符串