heap

heap并不属于STL容器组件,他是为priority queue优先队列提供服务。

heap只提供了算法,他是建立在vector上的一组操作。

heap的数据结构是一个数组,用vector来存储

提供的方法有:

push_heap(iterator1 first, iterator last) 向heap中加入一个节点,函数接受两个迭代器,用来表现heap的头和尾,并且新元素已经插入到容器的最尾端。调用该方法后,将最尾端的元素插入到适合的位置上。

pop_heap(iterator first, iterator last)弹出heap中堆顶的元素,函数同样接受两个迭代器,表示heap的头尾。当pop_heap之后,最大(小)的元素只是被放在容器的最尾端,没有被取走,所以需要调用vector的back()操作函数访问该元素,如果要移除该元素需要使用vector的pop_back()操作函数。


sort_heap(iterator first, iterator last)是将该堆排序为一个有序数组(vector),操作的方法是反复调用pop_heap()方法,每一次都将最大(小)的元素放到vector的底部,然后将last指针向前移动,直到和first重合,这样讲堆进行了排序。sort_heap())函数调用之后,heap就不是一个合法的heap了。

make_heap(iterator first, iterator last)将[first,last)排列成一个heap,默认是大顶堆。


priority_queue的实现就是利用max_heap大顶堆完成。priority_queue的所有元素,进出都有一定的规则,只有queue顶端的元素(权值最高),才有机会被外界所用,priority_queue不提供遍历功能,也不提供迭代器。只提供一下的几个方法:

priority_queue:empty

priority_queue:pop

priority_queue:push

priority_queue:size

priority_queue:top



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值