优先队列笔记
优先队列priority_queue
以最高速率获取最大值,大根堆
- 默认用法
默认priority_queue q;为升序列
priority_queue<int,vector,greater>q为升序;
priority_queue<int,vector,lesser >q为降序; - 运算符重载
升序变降序
#include <bits/stdc++.h>
using namespace std;
struct element{
int value;
};//只有自定义类才支持运算符重载
bool operator <(element lhs,element rhs){
//return true;
//默认情况下,是构建一个大根堆 lhs<rhs为真,触发交换
//重新解释<含义
return lhs.value>rhs.value;
}
int main(){
priority_queue<element> q;
int arr[]={6,4,2,5,3,1};
for(int i=0;i<6;i++){
element e;
e.value=arr[i];
q.push(e);
cout<<q.top().value<<endl;
}
return 0;
}