首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将新向量推回到向量中

将新向量推回到向量中
EN

Stack Overflow用户
提问于 2018-05-04 04:03:12
回答 1查看 108关注 0票数 0

我读了下面这段代码。

代码语言:javascript
运行
复制
vector<vector<int>> result;
//level is an integer. 
if (level > result.size())
     result.push_back(vector<int>());

我想知道:vector<int>()创建了什么,一个对象还是一个向量指针?

我认为它应该是一个向量对象,而不是向量的指针。否则,它将无法编译。

但是,我觉得vector<int>()new vector<int>()很相似。

也许我错过了什么?

如果你能指出我遗漏的知识点,我将非常感激。

非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2018-05-04 04:30:34

这两种情况都是相似的,因为它们提供了一个真实的、诚实的对象。不同之处在于你访问它的方式和它的寿命。

vector<int>()使用Automatic storage duration在自动存储中创建一个对象。你可以认为这是一个你可以在你的数字手中持有的对象,但只是暂时的。如果没有关联的标识符,它就会在行尾被销毁( goes out of scope )并消失。在销毁之前,它被复制到result中。使用标识符(例如,vector<int> vec;),则自动变量将一直持续到标识符到达其作用域的末尾。

new vector<int>()使用Dynamic storage duration在动态存储中创建一个对象,并为您提供指向该对象的指针。这个对象就在某个地方,你所“持有”的就是关于如何找到它的信息。在这种情况下有几个问题。您已经注意到了第一个问题,result不会接受指向vector的指针。它想要的是真正的东西。另一个问题是,具有动态存储持续时间的对象会一直挂起,直到使用delete手动销毁它们或该过程结束。除非你有一个指向它的指针,否则内存就会丢失,在没有系绳的情况下漂浮在空间中,你可以用来访问和删除它。

通常,避免使用new,除非您发现无法避免的极少数情况,在这些情况下使用prefer a smart pointer

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50163029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档