C++向量中向量的动态分配?

Mir*_*res 3 c++ stl

我现在正在工作,vector我有一个有趣的情况,我需要帮助.

我有一个矢量矢量,定义如下:

vector< vector<int> > list;
Run Code Online (Sandbox Code Playgroud)

我正在使用标准输入加载数字cin >> helpVar;,每当我得到0(零)时我想创建新的整数向量,这将被放入这个"主容器" list.

当然我不知道零号会出现多少次 - 这是用户所依赖的.所以我也不知道,程序会添加多少向量.

但我不知道,究竟是怎么做到的.如果我使用C#或其他类似垃圾收集的语言,我可能会写:

if(helpVar == 0)
{
   list.push_back(new vector<int>);
}
Run Code Online (Sandbox Code Playgroud)

但是这种结构在C++中不起作用.

所以我的问题是,我应该如何应对这种情况才能使其发挥作用?或者我只是想错了,它应该以另一种方式完成?

谢谢你的回答.

Jam*_*lis 7

list.push_back(vector<int>());
Run Code Online (Sandbox Code Playgroud)

vector<int>()创建一个临时vector<int>对象并初始化它(即,它调用该对象的默认构造函数). push_back然后将该临时对象复制到list.

在C#(和"其他垃圾收集语言")中,new用于创建新对象,其生命周期由垃圾收集器控制.

在C++中,new仅用于动态分配对象(并且您负责通过使用智能指针来管理其生命周期).语法T()(其中T是类型的名称)用于创建临时对象.