priority_queue初始化
小根堆初始化
priority_queue<int, vector, greater> q;
大根堆初始化
priority_queue<int, vector, less> q;
如果使用大根堆(默认为从小到到排序) 且不用自己定义的数据类型,可以直接:
priority_queue q;
数组直接初始化小根堆
vector<pair<int, int>> power;
priority_queue q(grreter<pair<int, int>>(), move(power));
q.pop();
对于pair, tuple这样的数据类型,也定义好了比较器。
1.pair:
//大根堆:
//priority_queue<pair<int, int>> pq0;
//小根堆:按照pair的first排序,再按照second排序
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> pq1;
2.tuple:
//默认是使用大根堆
priority_queue<tuple<int,int,int>> tp0;
//小根堆,按照tuple的0元素排,再按照1元素排,最后按2元素排
priority_queue<tuple<int,int,int>,vector<tuple<int,int,int>>,greater<tuple<int,int,int>>> tp1;
//大根堆
priority_queue<tuple<int,int,int>,vector<tuple<int,int,int>>,less<tuple<int,int,int>>> tp2;