指针和容器

Mar*_*ork 11 c++ containers stl smart-pointers

我们都知道RAW指针需要用某种形式的智能指针包装来获得Exception安全内存管理.但是当涉及指针容器时,问题变得更加棘手.

std容器坚持包含的对象是可复制的,因此这排除了使用std :: auto_ptr,尽管你仍然可以使用boost :: shared_ptr等.

但是也有一些明确设计的boost容器可以安全地保存指针:
请参阅指针容器库

问题是:在什么条件下,我更喜欢在smart_pointers容器上使用ptr_containers?

boost::ptr_vector<X>

or

std::vector<boost::shared_ptr<X> >
Run Code Online (Sandbox Code Playgroud)

Leo*_*ans 13

Boost指针容器对其拥有的资源拥有严格的所有权.std :: vector <boost :: shared_ptr <X >>具有共享所有权.有理由说明为什么这可能是必要的,但如果不是,我会默认使用boost :: ptr_vector <X>.因人而异.