c++ - Boost.Pointer 容器在 C++11/14 中被 std::unique_ptr 淘汰了吗?

标签 c++ boost c++11 stl smart-pointers

是否 std::unique_ptr使 Boost.Pointer Container 库在 C++11/14 中过时?

在 C++98/03 中没有移动语义,也没有像 shared_ptr 这样的智能指针。与原始指针相比,具有引用计数相关的开销(对于引用计数 block 和互锁增量/减量)。所以像 std::vector<shared_ptr<T>>如果与 std::vector<T*> 相比有开销.

但是是std::vector<std::unqiue_ptr<T>>std::vector<T*> 一样高效 (没有引用计数开销),此外安全关于异常和自动销毁(即 vector<unique_ptr<T>> 析构函数将自动调用析构函数对于指针存储在 T 中的 vector 项)?

如果是这样,Boost.Pointer Container 在 C++11/14 代码中是否仍然有用,还是只是过时了?

最佳答案

它并没有过时;它有一个完全不同的和更多 比std::vector<std::unique_ptr<T>>直观的界面.

关于c++ - Boost.Pointer 容器在 C++11/14 中被 std::unique_ptr 淘汰了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17657518/

相关文章:

c++ - 以下哪种方法可以安全地导出到 C++ dll 中?

c++ - C++中字符串和char数组声明的时间复杂度有什么区别?

c++ - 正确的类型转换以 boost 不同派生类的反序列化

c++ - 将实例数组实现为不同类型的好方法是什么

C++ 11 : Start thread with member function and this as parameter

c++ - struct 中的 const char 指针声明

c++ - OpenGL 中粒子发射器的简单 3D 烟雾算法

serialization - boost 序列化 : archive "unsupported version" exception

c++ - 具有连续存储的动态矩阵

c++11 - Boost 链接错误 : 'B5cxx11' symbols missing