问题标签 [boost-intrusive]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
63 浏览

c++ - 如何隐藏 Boost 侵入式列表挂钩?

在以下代码中:

我怎样才能使list_node私有?

0 投票
1 回答
136 浏览

c++ - boost intrusive 直接从节点获取下一个

是否可以直接从节点/元素获取下一个节点/元素?像这样:

0 投票
2 回答
155 浏览

c++ - 如何在两个 boost::intrusive::slist 对象之间传输节点

boost::intrusive::slist<boost::intrusive::cache_last<true>>在两个对象之间传输节点是否有效?类似于以下内容

我遇到分段错误,以及 boost 版本 1.70.0 https://wandbox.org/permlink/nWHakTYUiVBGKH6I的断言失败。我怎样才能解决这个问题?


注意:我无法分配新节点并复制旧节点,因为我使用侵入式列表来控制分配发生的时间和地点。

0 投票
1 回答
204 浏览

c++ - 为什么 boost intrusive list 的 push_back 函数需要左值?

我正在学习侵入性列表:

我了解侵入式列表的基本思想,但我不明白为什么 push_back 需要专门的左值。从逻辑的角度来看,为什么侵入式列表无法处理 rvalue ?

左值要求是否意味着用户需要自己处理 DummyObject 的生命周期?也就是说,当 IntrusiveList pop_front 时,弹出的对象不会被破坏?

另外,我通过左值传递的事件:

二进制文件中的一个断言失败:

intrusivelist: /usr/include/boost/intrusive/detail/generic_hook.hpp:48: void boost::intrusive::detail::destructor_impl(Hook&, boost::intrusive::detail::link_dispatch<(boost::intrusive: :link_mode_type)1>) [with Hook = boost::intrusive::generic_hook<(boost::intrusive::algo_types)0, boost::intrusive::list_node_traits, boost::intrusive::dft_tag, (boost::intrusive ::link_mode_type)1, (boost::intrusive::base_hook_type)1>]: 断言 `!hook.is_linked()' 失败。

0 投票
1 回答
934 浏览

c++ - C++ Boost 侵入式列表 - 示例

我对升压侵入式容器很好奇,并想对其进行测试。我基本上从 boost.org 的“如何使用 Boost.Intrusive”一章中复制粘贴了示例。所以我的代码如下所示:

它编译成功,但在执行时我不断收到以下错误:

我打开了 generic_hook.hpp 来检查是什么引发了这个错误,断言的描述是:

但这不可能是真的,至少我看不到我可能在哪里意外破坏了该对象。我还不知道这些容器的所有细节,所以我会很感激在这里得到一些帮助。

0 投票
1 回答
277 浏览

c++ - 与现代 C++ 中的非侵入式容器相比,侵入式容器是否仍然具有性能优势?

与现代 C++ 中的Boost.Intrusive非侵入式标准 ( ) 容器相比(具有移动语义等) ,容器是否仍然具有性能优势?std::emplace_back

0 投票
1 回答
52 浏览

c++ - Boost.Intrusive Containers - 不同大小的元素

在“何时使用?”一章的 Boost.Intrusive 文档中 https://www.boost.org/doc/libs/1_72_0/doc/html/intrusive/usage_when.html,据说您可以使用包含不同或未知大小的对象的侵入式容器。

我的问题是我不明白什么时候有人需要它(使用示例?)。而且我不明白给定示例中的哪个部分显示了这种行为,以及为什么你不能用标准容器做到这一点。

0 投票
1 回答
71 浏览

c++ - 将信息掩码为指针 - C++ (Boost.Intrusive)

在 Boost 上,我阅读了有关将信息屏蔽为指针以节省内存的信息(此处:https ://www.boost.org/doc/libs/1_72_0/doc/html/intrusive/set_multiset.html,optimize_size )。这怎么可能?我在某处读到指针仅使用 48 位,但长度为 64 位,因此您可以通过位移将信息推送到更高位。那是对的吗?

为什么他们使用整数来存储 rb-trees 的颜色信息?使用字符不是更有效吗?

0 投票
1 回答
231 浏览

c++ - 如何将 boost::intrusive_ptr 与 boost::intrusive::list 一起使用?

我想一次准确地分配一个对象并将其推送到几个列表中。我怎么能用 and 做到这boost::intrusive_ptr一点boost::intrusive::list?或者我应该使用另一个容器和引用计数器?

0 投票
1 回答
111 浏览

c++ - 在 boost intrusive 中使用存储桶的向量

如何管理boost::intrusive::unordered_setwith的存储桶std::vector?以下代码让我做噩梦:

错误消息表示违反const限定符。我的boost版本是 1.73.0,我的编译器 g++ 10.2.0。我必须使用c++17.

boost intrusive 手册提到const_bucket_ptr但没有说明如何达到该类型。我怀疑这是我的错误的来源,请参阅: https ://www.boost.org/doc/libs/1_74_0/doc/html/intrusive/unordered_set_unordered_multiset.html#intrusive.unordered_set_unordered_multiset.custom_bucket_traits

编辑:我用一个更简单的示例替换了我实际使用的以前的代码,您可以在家里完全编译。这是我的完整错误信息: