SET-Priority_Queue
原创
©著作权归作者所有:来自51CTO博客作者mb5dbc2345bf8de的原创作品,请联系作者获取转载授权,否则将追究法律责任
Priority_Queue称为优先队列,是一种给按照优先级顺序存储的队列,拥有queue的结构,同时拥有自动排序的能力。
1、常用函数
1.1 pop()
出队
1.2 top()
取队首元素
1.3 push()
入队
1.4 empty()
如果队空,则返回true
1.5 size()
返回队列大小
2、 优先级设置
2.1 基本数据类型
基本数据类型指的是 int, double ,char。
默认情况下数字越大,优先级越高。
priority_queue<double> q;
设置数字越小优先级越高。less<type>
表示数越大优先级越高,greater<type>
表示数越小优先级越大。
priority_queue<double, vector<double>, greater<double>> q;
2.2 结构体优先级设置
比如水果的价格越高优先级越高。
这里必须要定义结构体里面的friend函数,修改修改return语句部分即可,外层的小于号不能动。指定元素越大,优先级越高就要使用小于号,指定元素越小,优先级越高要使用大于号。
sort函数中自定义的cmp函数,如果向从大到小排列使用大于号,若想从小到大排列则使用小于号。似乎正好这个相反的,读者不要记混了。
#include<iostream>
#include<algorithm>
#include<cmath>
#include<queue>
using namespace std;
struct fruit{
string name;
int price;
friend bool operator < (fruit f1, fruit f2){
return f1.price < f2.price;
}
};
int main(){
priority_queue<fruit> q;
fruit a = {"桃子", 5};
fruit b = {"苹果", 45};
fruit c = {"火龙果",1};
q.push(a);
q.push(b);
q.push(c);
cout << q.top().name << endl;
return 0;
}