我现在正在使用 vector
,我有一个有趣的情况需要我帮忙。
我有一个 vector 的 vector ,定义如下:
vector< vector<int> > list;
我正在使用 cin >> helpVar;
从标准输入加载数字,每次当我得到 0(零)时,我想创建新的整数 vector ,它将被放入这个“主容器” "列表
。
当然我不知道,零数字会出现多少次 - 这取决于用户。所以我也不知道,程序会添加多少 vector 。
但我不知道,具体怎么做。如果我使用 C# 或其他类似垃圾收集的语言,我可能会这样写:
if(helpVar == 0)
{
list.push_back(new vector<int>);
}
但是这种构造在 C++ 中不起作用。
所以我的问题是,我应该如何处理这种情况才能使其发挥作用?还是我只是想错了,应该换一种方式来做?
感谢您的回答。
最佳答案
list.push_back(vector<int>());
vector<int>()
创建临时 vector<int>
对象并对其进行初始化(即调用该对象的默认构造函数)。 push_back
然后将该临时对象复制到 list
.
在 C#(和“其他垃圾收集语言”)中,new
用于创建新对象,其生命周期由垃圾收集器控制。
在 C++ 中,new
仅用于动态分配对象(并且您负责通过使用智能指针来管理其生命周期)。语法 T()
(其中 T
是类型的名称)用于创建临时对象。
关于C++ vector 中 vector 的动态分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8126115/