boost :: heap :: arity,它是什么?

时间:2016-07-27 12:01:26

标签: c++ c++11 boost std

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

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

现在我把boost::heap::arity<128>我真的很满意,但我不知道它是什么意思。你们其中一个,有一点解释?

1 个答案:

答案 0 :(得分:3)

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

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