【发布时间】:2021-07-15 14:15:36
【问题描述】:
以下示例的用例是什么:-
vector<Object> collection;
vector<Object> *collection = new vector<Object>
vector<Object*> collection;(creating the object on the heap)
我什么时候需要在对象向量上创建指针向量,并且向量(或任何 STL 容器)不分配堆上的元素?
【问题讨论】:
-
new vector<Object>没用。std::vector不应该直接在堆上分配,因为std::vector通常在堆上管理一些内存,它只保存三个指向托管内存的指针。其他版本很有用。第一个应该很明显,最后一个在你的书中读到了多态性。 -
@MarekR:
std::shared_ptr<std::vector<T>>有它的用法(因为任何带有U的std::shared_ptr<U>都包含std::vector<T>)。即使它更罕见。
标签: c++ oop c++11 vector memory-management