STL之priority_queue
来源:互联网 发布:好听的未注册域名 编辑:程序博客网 时间:2024/05/21 09:51
priority_queue用法
priority_queue在STL中模拟实现
先写一个用STL模板实现的与真正STL的priority_queue用法相似的priority_queue,以加深理解。
#include "iostream"#include "vector"#include "string"#include "queue"#include "algorithm"using namespace std;struct ListNode{ int val; ListNode* next; ListNode(int x):val(x),next(NULL){}};class priority_queue1{public: void push(int t){ data.push_back(t); push_heap(data.begin(),data.end()); } void pop(){ pop_heap(data.begin(),data.end()); data.pop_back(); } int size(){ return data.size(); } int top(){ return data.front(); } bool empty(){ return data.empty(); }protected:private: vector<int>data;};int main(){ priority_queue1 test; test.push(6); test.push(3); test.push(9); test.push(11); while (!test.empty()){ cout <<test.top()<<endl; test.pop(); } return 0;}
priority_queue的一些介绍
其模板带三个参数:
priority_queue < type , container , functional >
分别代表数据类型,容器,函数比较方式。
容器不能是list,默认为vector
比较方式默认用operator<,这样就是最大堆,对头元素最大
#include "iostream"#include "vector"#include "string"#include "queue"#include "algorithm"using namespace std;struct ListNode{ int val; ListNode* next; ListNode(int x):val(x),next(NULL){}};struct Node{ int x,y; Node(int a=0,int b=0):x(a),y(b){}};struct cmp{ bool operator()(Node a,Node b){ if (a.x==b.x){ return a.y>b.y; } return a.x>b.x; }};int main(){ priority_queue<Node,vector<Node>,cmp>q; for (int i=0;i<10;i++){ q.push(Node(rand(),rand())); } while (!q.empty()){ cout<<q.top().x<<' '<<q.top().y<<endl; q.pop(); } return 0;}
- return a.x>b.x 似乎是顶端最小,尾部最大
- Node(rand(),rand()) – 注意这边是括号呢
0 0
- STL之priority_queue
- STL之priority_queue
- STL之priority_queue【转】
- STL之priority_queue
- STL之priority_queue
- STL之priority_queue
- STL之priority_queue
- STL之priority_queue实现
- STL之priority_queue
- STL之priority_queue
- STL之priority_queue
- STL 之 priority_queue
- STL适配器之priority_queue
- STL学习之priority_queue适配器
- STL学习之priority_queue适配器
- STL 容器之 priority_queue小结
- STL之priority_queue源码剖析
- STL之queue和priority_queue
- 结合网页排名来做社会网络分析,挖掘核心人物
- 网络检测 Reachability
- 学习建议
- 为什么要写技术博客
- MySQL5.6.11安装步骤(Windows7 64位)
- STL之priority_queue
- uva10405 - Longest Common Subsequence(LCS)
- 一个匹配8-16位数字和字母密码的正则表达式
- 网络 IP地址
- AJAX跨域方法之一—使用<script>实现
- 安卓开发之路
- 并查集——nkoj2281方块游戏
- Activiti的引擎与引擎配置对象
- Linux-非结构化数据同步-Linux下Lsyncd+Rsync实现非结构化增量差异数据的同步5