STL中堆和优先队列的使用方法

来源:互联网 发布:linux连接wifi 编辑:程序博客网 时间:2024/05/21 16:54
一、heap
#include<algorithm>
make_heap(首位置, 尾位置+1, 可选的cmp函数); 
-> 构造堆,将数组堆化
push_heap(首位置, 尾位置+1, 可选的cmp函数); 
-> 添加元素到底层容器末尾,并将堆的作用范围扩展到这个元素,最后调整堆序 
pop_heap(首位置, 尾位置+1, 可选的cmp函数);  
-> 将堆顶元素与堆尾元素交换,并将堆的作用范围向小的方向缩小一个,最后调整堆序 
sort_heap(首位置, 尾位置+1, 可选的cmp函数); 
-> 整个堆进行排序
push_heap(heap.begin(),heap.end(),less<int>());
push_heap(heap.begin(),heap.end());
按大顶堆调整堆序
push_heap(heap.begin(),heap.end(),greater<int>());
按小顶堆调整堆序

二、priority_queue
#include<queue>

q.empty()             如果队列为空,则返回true,否则返回false

q.size()                返回队列中元素的个数

q.pop()             删除队首元素,但不返回其值

q.top()            返回具有最高优先级的元素值,但不删除该元素

q.push(item)            在基于优先级的适当位置插入新元素

priority_queue<int> que;
采用默认优先级构造队列
priority_queue<int,vector<int>,cmp> que;
按自定义优先级构造队列
priority_queue<int,vector<int>,greater<int> > que;
最小值优先
priority_queue<int,vector<int>,less<int> > que;
最大值优先

推荐博文:

二叉树相关练习题(C++)
经典排序算法的C++实现
与字符串有关的一些典型问题的C++解法
一些可以用动态规划(DP)算法解决的问题(C++)
排列组合相关笔试面试题(C++)
与概率相关的算法题C++解法(附证明过程)
二分查找的巧妙运用(C++)
位运算在算法题中的使用(C++)
链表相关练习题(C++)
用实例讲解栈和队列(C++)
一些智力题的C++解法


1 0