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;
}