首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >向量插入和赋值的区别

向量插入和赋值的区别
EN

Stack Overflow用户
提问于 2013-10-05 01:38:57
回答 3查看 207关注 0票数 1

我读到,赋值方法在将任何东西分配给it.Does之前清除向量目标索引,这意味着如果我们有一个向量,如:

代码语言:javascript
运行
复制
vector<foo*> somevector;

然后分配方法在将数据复制到目标索引之前实际删除foo*。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-05 01:42:00

不是的。std::vector永远不会对存储的指针调用delete。它只会摧毁物体。对于具有非平凡析构函数的类对象,破坏包括调用该析构函数。对于指针,或任何其他微不足道的可销毁对象,破坏包括什么都不做。

票数 2
EN

Stack Overflow用户

发布于 2013-10-05 01:41:44

然后分配方法在将数据复制到目标索引之前实际删除foo*。

不,它只会删除指针本身(),而不会删除指向.的指针的对象。

在STL容器中使用原始指针时,需要小心。如果您在somevector中动态地分配元素,则您可以保存泄漏内存。

更多的实践方法是在STL容器中使用智能指针,在以下情况下,动态分配的内存将被取消分配:

代码语言:javascript
运行
复制
std::vector<std::unique_ptr<foo>> somevector;
票数 3
EN

Stack Overflow用户

发布于 2013-10-05 01:41:37

不,包含指向对象的指针的标准容器永远不会调用指针上的delete --如果/在必要时,您有责任这样做。这就是为什么存储指针是个坏主意。

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

https://stackoverflow.com/questions/19193087

复制
相关文章

相似问题

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