我们都知道,RAW指针需要被包裹在某种形式的智能指针来获得异常安全内存管理。但是当谈到容器的指针时,问题变得更加棘手。指针和容器
集装箱坚持所包含的对象是可复制性病因此这排除了使用std :: auto_ptr的,虽然你仍然可以使用boost :: shared_ptr的等
但也有明确设计一些提升容器安全地持有指针:
见Pointer Container Library
的问题是: 在什么情况下,我应该更喜欢smart_pointers的容器使用ptr_containers?
boost::ptr_vector<X>
or
std::vector<boost::shared_ptr<X> >
这是可能的,有时是最好的选择,但如果一个类包含2个或更多的RAW指针使它异常安全是不平凡。但我不应该回答你的问题,因此我应该标记你。 – 2008-09-22 17:21:43