c++ - Boost:支持在 O(log n) 时间内查找元素的优先级队列

标签 c++ boost

我很好奇 Boost 是否提供优先队列实现,它也支持在时间 O(log n) 中查找元素?

我可以通过使用 Boost Fibonacci 堆来实现此功能,并将句柄及其索引一起存储在 std::map 中,并在堆插入时更新此信息,但我希望有一个已经提供此功能的堆版本.

注意:我删除了我之前版本的问题,因为它太模棱两可了。

最佳答案

如果您不介意在空间和插入时间上有(相当大的?)开销,您可以在此处使用多索引容器。

作为一个想法,下面是一个使用 Boost Multi-Index 在 Boost Asio 之上实现事件对象模式的优先级队列的示例:

需要注意的是,Multi-Index 允许您在同一容器上指定任意数量的二级/辅助索引

关于c++ - Boost:支持在 O(log n) 时间内查找元素的优先级队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24397466/

相关文章:

c++ - 多线程在 c++ 中的递归函数,编辑..使用 OpenMP 比以前慢

c++ - SDL 图像撕裂/卡顿

c++ - sizeof(str -1) 和 sizeof(str) -1 之间的区别?

c++ - 参数评估和未定义行为

c++ - 从原始指针创建 weak_ptr<>

c++ - 仅对某些对象透明?

c++ - 在 C++ 动态链接函数中调用 Octave 排序?

c++ - 当g++静态链接pthread时,导致段错误,为什么?

c++ - 如何使用 boost::date_time 获取两个日期之间的天数

c++ - 汇编指令的正则表达式