STL 堆的使用
2024-08-28 04:41:00
本来是要写leetcode上的merge k sorted lists那道题目,这个题目我还是很熟悉的,毕竟是看过算法导论的人,但是写的过程中对堆的维护代码还是挺多的,所以我想到了STL中的堆。下面就来学习一下这个STL。
先介绍一个非常好的学习C++的网站 http://www.cplusplus.com/ 这个网站对C++的理解还是很好的,个人觉得比msdn要好不知道哪里去了。
对堆的操纵主要有以下四个:
make_heap, pop_heap, push_heap, sort_heap
他们的函数原型就不说了,需要说明的就是这些函数的操作和算法导论上的算法是一样的,有一些需要注意的细节是make_heap,pop_heap,push_heap,sort_heap三个参数的形式,他们第三个参数都是判断大小的函数,而这个函数就是他们这三个函数维护堆的比较函数,例如:
void pop_heap (RandomAccessIterator first, RandomAccessIterator last,
Compare comp);
vector<int> a = { , , , , , , , , , , };
make_heap(a.begin(), a.end(),greater<int>());
cout << a.front() << endl; pop_heap(a.begin(),a.end(),greater<int>());
for (int i = ; i < a.size(); i++)
{
cout << a[i] << endl;
}
a.pop_back();
这个pop_heap操作是先把堆顶的元素拿出来,然后通过comp去维护堆(这里应该是把队尾的元素放到第一个去维护),然后在把之前堆顶的那个放到队尾。
所以comp是维护的基本,所以一般四个函数除非有特殊需求,要求comp必须相同。
最新文章
- JavaScript 变量声明提前
- SPSS数据分析—典型相关分析
- Net数值计算MathNet.Numerics类库
- Mysql不区分大小写
- Lucene IndexReader,IndexWriter,IndexSearcher 缓存应用
- Nginx 配置指令的执行顺序(九)
- SpringMVC 学习-异常处理 SimpleMappingExceptionResolver 类
- PLC不能初始化问题
- linq2db sqlite应用
- ES6最新语法
- consul初步学习
- HDU-6395-矩阵快速幂
- 用 CentOS 7 打造合适的科研环境
- USB2.0学习笔记连载(十):关于WIN8及以上系统哈希值问题
- Cocos2dx源码赏析(2)之渲染
- jsp中jsp:forward 与 redirect区别
- easyui问题小结
- python开发_random
- for循环、for-in、forEach、for-of四大循环
- DevExpress 控件使用技巧
热门文章
- The Great Mixing
- 学习动态性能表(15)--v$rollstat
- Python函数-dir()
- 在阿里云服务器上安装git
- linux find 实例 ***
- 自定义mysql函数时报错,[Err] 1418 - This function has none of DETERMINISTIC......
- 【转】轻舞飞扬 LTE基本架构
- CentOS7 线上环境的一些 配置
- 2015.12.12 DataGridveiw中添加checkbox列
- 2015.1.15 利用航线id取所有点的函数创建视图