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>.因人而异.
归档时间: |
|
查看次数: |
2835 次 |
最近记录: |