042 - 问,heap与priority queue

042 - 问,heap与priority queue

heap

不属于stl容器组件。

是priority queue的助手。

priority queue 

以任何次数将元素推入容器,但取出时一定从优先权最高的元素开始取。

正适合使用binary max heap实现。

是一个拥有权值观念的queue。

binary heap

是一种complete binary tree(完全二叉树)。

max heap

每个节点的键值都大于等于其子节点的键值。

min heap

每个节点的键值都小于等于其子节点的键值。

implicit representation

隐式表述法:以array表述tree的方式。

迭代器

heap 没有。

heap实现(都是全局函数)

push_heap

此函数调用时,新元素已经放于容器的最尾端。

042 - 问,heap与priority queue_第1张图片

stl heap默认是max heap。

将插入的值,不断的percolate up。

pop_heap

取走最大值,即根节点。

percolate down。

042 - 问,heap与priority queue_第2张图片

make_heap

042 - 问,heap与priority queue_第3张图片

sort_heap

只需要不断取出。

wps_clip_image-31963

priority queue实现

同样是container adapter。

042 - 问,heap与priority queue_第4张图片

你可能感兴趣的:(042 - 问,heap与priority queue)