草庐IT

exception_ptr

全部标签

c++ - 将 unique_ptr 添加到 vector 中的类会导致 3 倍 boost

背景我有一个大图(100k个节点),其中每个节点必须为每个出边存储一些信息。而不是将其保存在std::vector中,我正在使用dynamic_bitset从Boost1.58开始,可以执行按位运算。每个节点还保留一个指向某个多态对象的指针。一个最小的例子看起来像这样,structNode{std::vectorsucc;boost::dynamic_bitsetsucc_flags;std::unique_ptrdata;};问题考虑这个简单的基准程序,它创建和销毁一个图:#include#include#includeconstexprintN=50000;structNode{s

c++ - 将 unique_ptr 添加到 vector 中的类会导致 3 倍 boost

背景我有一个大图(100k个节点),其中每个节点必须为每个出边存储一些信息。而不是将其保存在std::vector中,我正在使用dynamic_bitset从Boost1.58开始,可以执行按位运算。每个节点还保留一个指向某个多态对象的指针。一个最小的例子看起来像这样,structNode{std::vectorsucc;boost::dynamic_bitsetsucc_flags;std::unique_ptrdata;};问题考虑这个简单的基准程序,它创建和销毁一个图:#include#include#includeconstexprintN=50000;structNode{s

c++ - 不同风格的 shared_ptr 之间的差异

boost::shared_ptr之间有什么区别吗?,std::tr1::shared_ptr和即将到来的(在C++0x中)std::shared_ptr?从一个移植到另一个是否会有任何开销或者它们基本相同? 最佳答案 根据Boost网站,boost::shared_ptr......conformstotheTR1specification,withtheonlyexceptionthatitresidesinnamespaceboostinsteadofstd::tr1.根据维基百科C++0x页面TheTR1implementa

c++ - 不同风格的 shared_ptr 之间的差异

boost::shared_ptr之间有什么区别吗?,std::tr1::shared_ptr和即将到来的(在C++0x中)std::shared_ptr?从一个移植到另一个是否会有任何开销或者它们基本相同? 最佳答案 根据Boost网站,boost::shared_ptr......conformstotheTR1specification,withtheonlyexceptionthatitresidesinnamespaceboostinsteadofstd::tr1.根据维基百科C++0x页面TheTR1implementa

c++ - 为什么 shared_ptr 引用计数对象也需要跟踪指向该对象的 weak_ptr 上的数字?

您好,我正在阅读thisdocument和其他一些关于C++的shared_ptr的文档,他们似乎都建议除了指向分配对象的shared_ptr的数量之外,引用计数对象必须跟踪如何许多weak_ptr指针也指向该对象。我的问题是为什么?据我了解,weak_ptr是非拥有的,因此如果指向对象的shared_ptr计数达到零,则可以删除该对象。这就是为什么有时我们需要使用expired检查weak_ptr指向的对象的可用性。您能解释一下需要跟踪weak_ptr数量的原因吗?为什么我们在这里需要弱计数? 最佳答案 std::weak_ptr

c++ - 为什么 shared_ptr 引用计数对象也需要跟踪指向该对象的 weak_ptr 上的数字?

您好,我正在阅读thisdocument和其他一些关于C++的shared_ptr的文档,他们似乎都建议除了指向分配对象的shared_ptr的数量之外,引用计数对象必须跟踪如何许多weak_ptr指针也指向该对象。我的问题是为什么?据我了解,weak_ptr是非拥有的,因此如果指向对象的shared_ptr计数达到零,则可以删除该对象。这就是为什么有时我们需要使用expired检查weak_ptr指向的对象的可用性。您能解释一下需要跟踪weak_ptr数量的原因吗?为什么我们在这里需要弱计数? 最佳答案 std::weak_ptr

c++ - 我应该使用 boost::ptr_vector<T> 还是 vector<boost::shared_ptr<T>>?

我需要一个指针容器。你会推荐boost::ptr_vector或std::vector>?(或者别的什么?)如果感兴趣的话,我的实际数据结构相对复杂(见here)并且目前存储对象,而不是指针,但我想改变它(使用指针容器),以摆脱不必要的复制:typedefstd::multimap>VecElem;std::vectorvec; 最佳答案 谁拥有对象?如果容器拥有对象(意味着对象的生命周期不应超过容器),请使用ptr_vector。否则,使用shared_ptr的vector。标准库容器(例如std::vector或std::lis

c++ - 我应该使用 boost::ptr_vector<T> 还是 vector<boost::shared_ptr<T>>?

我需要一个指针容器。你会推荐boost::ptr_vector或std::vector>?(或者别的什么?)如果感兴趣的话,我的实际数据结构相对复杂(见here)并且目前存储对象,而不是指针,但我想改变它(使用指针容器),以摆脱不必要的复制:typedefstd::multimap>VecElem;std::vectorvec; 最佳答案 谁拥有对象?如果容器拥有对象(意味着对象的生命周期不应超过容器),请使用ptr_vector。否则,使用shared_ptr的vector。标准库容器(例如std::vector或std::lis

c++ - 如果我读过 Effective C++ 系列,我应该读 Exceptional C++ 书籍吗

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题吗?更新问题,以便editingthispost提供事实和引用来回答它.关闭8年前。Improvethisquestion在过去的6-7年里,我是一名练习C++程序员(在Unix和gcc3.x上)。我从头到尾阅读了ScottMeyer的EffectiveC++、MoreEffectiveC++和EffectiveSTL,并与Boost一起实践并实践了他的建议/技术。我想继续讨论C++的更高级方面——类似于AndreiAlexandrescu的“现代C++设计”。但是,在开始阅读本文之前,我想知道是否也应该花时

c++ - 如果我读过 Effective C++ 系列,我应该读 Exceptional C++ 书籍吗

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题吗?更新问题,以便editingthispost提供事实和引用来回答它.关闭8年前。Improvethisquestion在过去的6-7年里,我是一名练习C++程序员(在Unix和gcc3.x上)。我从头到尾阅读了ScottMeyer的EffectiveC++、MoreEffectiveC++和EffectiveSTL,并与Boost一起实践并实践了他的建议/技术。我想继续讨论C++的更高级方面——类似于AndreiAlexandrescu的“现代C++设计”。但是,在开始阅读本文之前,我想知道是否也应该花时