优先队列:priority_queue
来源:互联网 发布:java 线程间通信 编辑:程序博客网 时间:2024/06/06 13:09
①优先队列是一种抽象数据类型,行为有些像队列,但是他不是先进先出型队列;
②先出优先队列的元素是队列中优先级最高的元素。就像“急诊病人插队”;
③优先队列的头文件也是<queue>
④用“priority_queue<int> pq”来声明。这个pq是一个越小的整数优先级越低的优先队列。
⑤出队元素不是先进队的元素,出队的方法由queue的front()变为了top(),而不再是front();
自定义类型也可以组成优先队列,但必须为每个元素定义一个优先级。这个优先级并不需要一个确定的数字,只需要能比较大小即可。看到这里,是不是想起了sort?没错,只要元素定义了“小于”运算符,就可以使用优先队列。
在一些特殊情况下,需要使用自定义方式比较优先级
例如:要实现一个“个位数大的整数优先级反而小”的优先队列,可以定义一个结构体cmp,在cmp中重载“()”运算符,使cmp“看上去”像一个函数 ,
然后用“priority_queue<int,vector<int>,cmp> pq”的方式定义。
下面是这个cmp的定义:
struct cmp {
bool operator() (const int a, const int b) const { //a 的优先级比b小时返回true
return a % 10 < b % 10;
}
};
对于一些常见的优先队列,STL提供了更为简单的定义方法,
例如,“越小的整数优先级越大的优先队列”
可以写成“priority_queue<int,vector<int>,greater<int> >pq”。
注意,最后两个“>”符号不要写在一起,
否则会被很多(但不是所有)编译器误认为是“>>”运算符。
参考地址:http://blog.csdn.net/crayondeng/article/details/16332169
- 优先队列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 使用方法
- uva714 - Copying Books
- 深入研究java.lang.Class类
- Android系统input系统(1)
- uva607
- 用Modelsim SE 10.1a进行仿真的大致步骤
- 优先队列:priority_queue
- linux学习之c语言swap函数
- C++ 17 的最新动态
- Redis 入门学习时不理解的问题
- 用两个栈模拟一个队列
- eclipse 快捷键
- pat1001:害死人不偿命的(3n+1)猜想
- MySQL启动远程连接
- Round robin