参考链接: 队列与优先队列的总结
堆树的定义如下:
(1)堆树是一颗完全二叉树;
(2)堆树中某个节点的值总是不大于或不小于其孩子节点的值;
(3)堆树中每个节点的子树都是堆树。
当父节点的键值总是大于或等于任何一个子节点的键值时为最大堆。 当父节点的键值总是小于或等于任何一个子节点的键值时为最小堆。如下图所示,左边为最大堆,右边为最小堆。
priority_queue
底层实现:用max_heap(最大堆)实现。缺省情况下是以vector为底部容器
注意其中的top、push、pop写法
关于push_heap与pop_heap的实现可参考:
https://blog.csdn.net/qq_29762941/article/details/83313025中的push_heap与pop_heap源码