STL 中make_heap学习
来源:互联网 发布:本地直通车软件 编辑:程序博客网 时间:2024/06/04 01:37
STL中make_heap 的接口为:
template <class RandomAccessIterator> void make_heap (RandomAccessIterator first, RandomAccessIterator last);
template <class RandomAccessIterator, class Compare> void make_heap (RandomAccessIterator first, RandomAccessIterator last, Compare comp );默认的使用operator< 进行比较。而我们可以自定义comp进行比较,来进行建堆。
其中,两个make_heap所使用的参数,[first,last) 这个区间是半开半闭的。
例如:
vector<int>vec(5);for (int i=0; i< 5;i++){vec[i]=i+2;}make_heap(vec.begin(),vec.end());这样我们就建立了一个堆,现在vec中的元素顺序为:
6,5,4,2,3
当我们需要对堆进行存取操作时,我们有函数,pos_heap,push_heap
template <class RandomAccessIterator> void pop_heap (RandomAccessIterator first, RandomAccessIterator last);
template <class RandomAccessIterator, class Compare> void pop_heap (RandomAccessIterator first, RandomAccessIterator last, Compare comp);
使用pop_heap 操作后, 最大值被移动到last-1的位置。[first ,last-1) 之间的元素继续保持堆的形态。
我们只需取出最后一个元素即可。也就是vec.pop_back();
template <class RandomAccessIterator> void push_heap (RandomAccessIterator first, RandomAccessIterator last);
template <class RandomAccessIterator, class Compare> void push_heap (RandomAccessIterator first, RandomAccessIterator last, Compare comp);执行push_heap 时, [first,last-1)个元素是保持堆形态的,如果不是堆,则会报错。
这个函数是相当于对堆进行调整。
0 0
- STL 中make_heap学习
- STL中heap相关函数的用法:make_heap,push_heap,pop_heap...
- STL源码解析 - make_heap
- STL make_heap使用
- 从一道整数合并问题学习 STL 之make_heap &&priority_queue&&multiset
- STL中的make_heap、push_heap、pop_heap示例程序
- STL---heap概述,make_heap,sort_heap,pop_heap,push_heap。
- STL algorithm算法make_heap和sort_heap(32)
- STL之heap的make_heap函数
- STL---heap概述,make_heap,sort_heap,pop_heap,push_heap
- STL---heap概述,make_heap,sort_heap,pop_heap,push_heap
- STL---heap概述,make_heap,sort_heap,pop_heap,push_heap。
- STL---heap概述,make_heap,sort_heap,pop_heap,push_heap
- priority_queue 调用 STL里面的 make_heap(), pop_heap(), push_heap() 算法
- 【STL】Heap算法——push_heap、pop_heap、sort_heap、make_heap
- STL 中 List 学习
- STL中list学习
- STL学习中。。。
- ubuntu12.04x64安装jd-gui
- Values of attribute 'level' not equal in different manifest snippets-MFC链接问题
- 黑马程序员——static关键字丶main方法丶继承...
- 如何将shp文件作为底图,做成mpt
- 工作问题总结(二十八)JS调用---网页调用C++程序,可传参
- STL 中make_heap学习
- 使用AIDL实现进程间的通信
- andrioid实时数据采集
- C/C++ 内存分配方式,堆区,栈区,new/delete/malloc/free
- POJ 1113 Wall(凸包)
- cxf与xfire互相调用,并且加验证机制
- commons-logging + Log4j
- ubuntu上samba环境搭建
- Servlet之过滤器Filter详解