阅读了 timdays 回答中的此问题后,我对
boost::ptr_container
和std::vector<shared_ptr>
之间的区别很感兴趣。 我的印象是,boost::ptr_container
拥有其所接收指针的所有权,并且在释放时会调用所有指针的析构函数,而不管其他关于它所拥有的指针的引用情况。 这与 std::vector<shared_ptr>
相反,如果 ref 计数为 0,则只会释放指针本身。
如果是这种情况(我认为不是),那么为什么 Boost 文档示例 将这两个比较,并且为什么 timday 的回答会提出 boost::ptr_container
,因为它与 std::vector<shared_ptr>
的目的非常不同。