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

前端之家收集整理的这篇文章主要介绍了Boost.Pointer容器在C 11/14中被std :: unique_ptr淘汰了?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在C 11/14中,std :: unique_ptr是否使Boost.Pointer容器库过时了?

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

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

如果是这样,Boost.Pointer容器在C 11/14代码中仍然有一个有效的有用位置,还是刚刚过时?

解决方法

正如James在他的回答中提到的那样,Boost.Pointer容器提供了一个更直观的界面,与通过将unique_ptr粘贴到标准库容器中所获得的相比.

除此之外,boost :: ptr_vector< T> (和朋友)将指向的类型存储为下面的void *,因此您不会为每个T获得整个类模板实例化.对于vector< unique_ptr< T>>,情况并非如此.

原文链接:https://www.f2er.com/c/115279.html

猜你在找的C&C++相关文章