use*_*112 1 c++ memory memory-management vector
在什么情况下使用会更好:
vector<X*>* vector = new vector<X>();
Run Code Online (Sandbox Code Playgroud)
代替:
vector<X>* vector = new vector<X>();
Run Code Online (Sandbox Code Playgroud)
什么是优点/缺点?
动态分配矢量本身几乎没有充分的理由.除非你做一些非常不寻常的事情,否则不要这样做.
在所有对象具有相同类型的常见情况下,您通常需要一个对象向量,vector<X>.
你想要一个指针向量,vector<X*>如果
X是一个多态基类; 和X通过向量访问不同子类型的对象; 和如果您希望容器管理异构对象的生命周期,则存储智能指针,例如std::unique_ptr,或使用类似Boost指针容器库的东西.
正如评论中所提到的,如果对象不能或不应该被移动,你也可以考虑一个指针向量:向量将随着它们的增长移动它们的元素,以维持一个连续的数组.在这种情况下,您还应该考虑使用像deque或的稳定容器list.