是std :: vector用push_back复制对象吗?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (67)

经过valgrind的大量调查之后,我得出结论:std :: vector会复制一个你想push_back的对象。

这是真的吗?矢量不能保留一个没有拷贝的对象的引用或指针?!

提问于
用户回答回答于

是的,std::vector<T>::push_back()创建一个参数的副本并将其存储在向量中。如果你想存储你的向量中的对象的指针,创建一个std::vector<whatever*>而不是std::vector<whatever>

但是,需要确保指针引用的对象保持有效

用户回答回答于

是的,std::vector存储副本。

如果想传输或共享对象使用指针的所有权,使用智能指针shared_ptr来简化资源管理。

扫码关注云+社区