优先队列priority_queue
来源:互联网 发布:网速测试软件 编辑:程序博客网 时间:2024/06/05 21:15
链接:优先队列
STL库的优先队列容器priority_queue的头文件在<queue>中,容器的特点就是:队列的首元素一定是最大的。
如果使用自定义数据类型,例如struct ,class等,则必须重载<运算符
例如:
struct node{ int num; int key; bool operator < (const node &n) const { return key > n.key; }};//我们重载了>运算符,以key进行比较.
此时如果我们priority_queue<node>que进行操作时,最小值将优先
比较重要的方法:
top()方法,返回队首的元素,并且队首元素一定是最大的,返回的是引用。
push()方法,将一个元素插入到队列中并保持队首元素一定是最大的。
empty()方法,如果优先队列为空那么返回真。
pop()方法,将队列的第一个元素删除
注意,优先队列,已经不和普通的队列一样,它不满足队列的原则,先进先出已经不可能的
练一下哎!
消息队列
使用优先队列即可,不过要注意:优先队列不满足先进先出的原则
AC代码:
#include <queue>#include <iostream>#include <string.h>using namespace std;struct node{ char msg[16]; int num; int key; int cnt; bool operator <(const node &n) const { if(key != n.key) return key > n.key; else return cnt > n.cnt; }};int main(){ priority_queue<node>que; char order[5]; int cnt = 0; while(cin>>order) { if(strcmp(order,"GET") == 0) { if(que.empty()) cout << "EMPTY QUEUE!" <<endl; else { node tmp = que.top(); que.pop(); cout << tmp.msg <<" " << tmp.num << endl; } } else { node tmp; cin >> tmp.msg >> tmp.num >> tmp.key; tmp.cnt = cnt++; que.push(tmp); } } return 0;}
0 0
- 优先队列Priority_Queue
- 优先队列priority_queue
- 优先队列priority_queue
- STL priority_queue 优先队列
- STL priority_queue 优先队列
- priority_queue优先队列使用
- Priority_queue优先队列
- Priority_queue优先队列容器
- 优先队列(priority_queue)
- priority_queue 优先队列
- 优先队列priority_queue
- 优先队列priority_queue用法
- 优先队列---priority_queue
- 优先队列 priority_queue
- priority_queue(优先队列)
- 优先队列priority_queue
- 优先队列容器-priority_queue
- 优先队列priority_queue 使用方法
- 选择GUI开发还是Web开发的问题
- android 真机调试(2014)
- Android复习
- nodejs express 加载html模板
- 002_025 Python 修改Windows上一系列文件的属性,如设置文件为只读、归档等
- 优先队列priority_queue
- mysql-5.6.16-winx64.zip 安装
- Hibernate SQLQuery 原生SQL 查询及返回结果集处理-1
- 内存溢出与内存泄漏区别
- Search in Rotated Sorted Array
- gf_file_to_blob(string file1,blob blob1) pb 读取文件到大字段变量
- How to understand pare(soft/hard) in AWR report
- cocos2d-x图片变灰或者变亮
- Hibernate SQLQuery 原生SQL 查询及返回结果集处理-2