#include <iostream>
#include <vector>
#include <queue>//这个头文件是队列的 包含两个很重要的数据结构 第一个数据结构是queue队列 第二个数据结构是priority_queue优先队列
using namespace std;
int main(){
// queue<int> q;
// queue<double> a;
// struct Rec{
// int a, x, y;
// };
// queue<Rec> b;
// 队列有一个性质就是先进先出 也就是如果我们按照123的顺序去插入的话 我们得用123的顺序去排出
//与之相对的 有一个优先队列 优先队列是如下这个方式定义的
queue<int> q;//队列
//默认是一个大根堆
priority_queue<int> a;//大根堆
//如果希望小根堆 也就是队列默认返回一个最小值 需要加两个参数
priority_queue<int, vector<int>, greater<int>> b;//小根堆
// priority_queue<pair<int, int>> c;//可以换成其他的类型 pair是一个双关键字的 二元组?
// struct Rec{
// int a, b;
// bool operator< (const Rec& t) const{//重载方式这么写 一定要重载小于号因为是大根堆
// return a < t.a;//表示a越大的结构体越大
// }
// };
// //如果要优先队列定义结构体的话一定要重载小于号
// priority_queue<Rec> d;
//默认大根堆重载小于号
//如果用的是大根堆的话就要重载小于号 如果要用小根堆的话重载的是大于号
struct Rec{
int a, b;
bool operator> (const Rec& t) const{
return a > t.a;
}
};
priority_queue<Rec, vector<Rec>, greater<Rec>> d;
d.push({1, 2});
}