【发布时间】:2016-11-03 12:32:17
【问题描述】:
如果有一个对象向量,例如:
vector <Obj> a;
创建指向向量 a 中对象的指针向量的最佳方法是什么?:
vector <Obj*> b;
【问题讨论】:
-
哪个版本的 C++ ? C++11, C++14, C++~17 ?为什么不是智能指针向量?
-
从C++11开始你可以使用list initialization(即:vector
b { new Obj(), obj_ptr, ... }) -
这样做要小心。如果
a必须分配新的存储空间,你最终会得到一个充满悬空指针的向量。 -
@krzaq 的回答很好,但我想在这里指出这是一个脆弱的情况。
b中的指针几乎可以通过对a的任何插入或删除操作而失效。
标签: c++ vector stl initialization