【发布时间】:2010-09-12 01:46:58
【问题描述】:
我们都知道 RAW 指针需要包装在某种形式的智能指针中才能获得异常安全的内存管理。但是当涉及到指针容器时,问题就变得更加棘手了。
std 容器坚持包含的对象是可复制的,因此这排除了 std::auto_ptr 的使用,尽管您仍然可以使用 boost::shared_ptr 等。
但也有一些 boost 容器专门设计用于安全地保存指针:
见Pointer Container Library
问题是: 在什么情况下我应该更喜欢使用 ptr_containers 而不是 smart_pointers 容器?
boost::ptr_vector<X>
or
std::vector<boost::shared_ptr<X> >
【问题讨论】:
标签: c++ stl containers smart-pointers