我们都知道 RAW 指针需要包装在某种形式的智能指针中才能获得 Exception 安全的内存管理。但是当涉及到指针容器时,问题变得更加棘手。
std 容器坚持包含的对象是可复制的,因此这排除了 std::auto_ptr 的使用,尽管您仍然可以使用 boost::shared_ptr 等。
但也有一些 boost 容器明确设计用于安全地保存指针:
请参阅指针容器库
问题是:在什么情况下我应该更喜欢使用 ptr_containers 而不是 smart_pointers 容器?
boost::ptr_vector<X>
or
std::vector<boost::shared_ptr<X> >