c++ - C++ STL优先级队列使用什么堆结构?

标签 c++ data-structures stl heap priority-queue

具体来说,STL 优先级队列容器适配器使用什么堆变体?我正在对它与我自己的手工二进制堆和双桶结构实现进行基准测试,所以只是想知道。任何有趣的实现知识均可加分!

最佳答案

这个问题被标记为 C++(而不是询问特定编译器的特定实现细节),所以我已经检查了标准以获取任何信息。在 23.6.4 的各个部分中,我们了解到 priority_queue 的行为就像使用 make_heappush_heappop_heap。然后这些函数被记录(在 25.4.6 部分)具有复杂性 At most 3 * (last - first) comparisons., At most log(last - first) comparisons.At most 2 * log(last - first) comparisons. 分别。因此,某些堆实现可能由这些特征指示,但没有调用特定的堆。

关于c++ - C++ STL优先级队列使用什么堆结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25489994/

相关文章:

c++ - 使用标准 C++ 复制大型二进制文件

c# - MS VC++ 运行时库错误运行托管 C# 应用程序

c - 链表删除位置 N 的节点

c++ - 列表和多线程环境

c++ - 我可以在 CUDA 代码的内核部分使用 C++ 头文件吗?

algorithm - 范围并集的长度

matlab - 在分析期间应如何存储大型 MATLAB 数据文件?

c++ - 如何获取 MAP 中的第一个非 NULL 值?

c++ - STL 表示隐含交叉引用的数据结构的方法

具有多个变量初始化的 C++ for 循环结构