c++ - boost::heap::arity,它是什么?

标签 c++ c++11 boost std

我正在清理遗留代码。里面有一个1986年的优先队列^_^。 将其与 C++ 接口(interface)连接后,越来越不符合标准。我在“市场”上的所有优先级队列之间做了一些基准测试(std + boost)。

Boost提供了一个priority_queue名称boost::d_ary::heap 。此队列需要一个名为 boost::heap::arity<int> 的参数,Boost的文档并没有提供明确的解释,只是提供了堆实现的链接。

目前我输入boost::heap::arity<128>我真的很满意,但我不知道这意味着什么。你们中的一位能解释一下吗?

最佳答案

优先级队列通常实现为 heaps 。堆是顶部有部分顺序的完整树。这样的完整树一般存储在一个数组中。数量描述了树的每个节点最多有多少个子节点。对于二元数,树是二叉树,依此类推。从抽象的角度来看,对应于堆的树的深度大致为 log(n)/log(d) (其中 d 是堆的数量)。

堆的性能(理论上)取决于数量,实际上最重要的是缓存效率。您应该运行一些基准测试来测试性能。我认为128的值相当高,我个人使用的范围是2到16。

关于c++ - boost::heap::arity,它是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38612377/

相关文章:

c++ - 如果我以与锁定它们相反的顺序解锁互斥锁,这是否容易出现死锁?

c++ - 为 std::set 重载运算符 <

c++ - boost::asio 中的未经请求的消息使应用程序崩溃,没有 SSL 它工作正常,为什么?

c++ - 如何在不删除对象的情况下从 boost::ptr_vector 中删除指针?

c++ - 为什么将 auto 推导出为 int 而不是 uint16_t

c++ - 折叠表达式的操作数是否需要加括号?

c++ - 如何正确删除单链表c++中的节点

c++ - 在 vector 中使用共享指针来访问类对象

c++ - 当 regex_search 返回 true 时,零是否始终匹配 "matches"?

c++ - 将UTC时差转换成字符串boost