首页 > 其他 > 详细

《STL源码剖析》读书笔记之序列式容器(3)

时间:2015-03-06 16:32:41      阅读:221      评论:0      收藏:0      [点我收藏+]

1.heap

     heap不属于STL容器组件,它是priority queue的底层实现机制。

(1)push_heap算法

     向堆中加入元素,首先将要加入的元素放到堆所在数组的末端,然后再对这个元素进行上溯操作,直到新堆合法为止。如下图所示:

技术分享

(2)pop_heap算法

     pop_heap操作取走堆中的最大(小)值。根据堆的特性,堆的最大(小)值必定是堆所存数组的第一个元素。取堆的最大(小)元素时,将堆的最后一个元素和堆的第一个元素互换,然后再对第一个元素进行下溯操作,直到新堆满足堆的定义。下图给出的是一个例子:

技术分享

(3)sort_heap算法

     每次pop_heap操作都能取得heap的最大(小)值,则持续的对heap进行pop_heap操作,直到heap为空时,便得到了heap的有序序列。其过程如下所示:

技术分享

技术分享


2.priority_queue

     顾名思义,priority_queue表示优先队列。STL里面的priority_queue默认由heap来完成,后者是一个vector存储complete binary tree。

     priority_queue的完整定义如下:

技术分享


《STL源码剖析》读书笔记之序列式容器(3)

原文:http://blog.csdn.net/yao_wust/article/details/44100751

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!