STL的优先队列:
头文件:
#include <queue> using namespace std;
优先队列:priority_queue
int类型默认优先队列(大根堆)
priority_queue<int>que;
int类型优先队列 (比较方式自定)
注意:cmp为结构体,且重载的是"()" 运算符!
struct cmp1{ bool operator ()(int a,int b){ return a>b;//最小值优先 } }; struct cmp2{ bool operator ()(int a,int b){ return a<b;//最大值优先 } }; priority_queue<int,vector<int>,cmp1>que1;//最小值优先 priority_queue<int,vector<int>,cmp2>que2;//最大值优先
自定类型优先队列
注意:重载"<" 运算符时只传入一个形参(number2 a)!
注意:用 “< ”时是大根堆(即默认情况)!
struct number1{ int x; bool operator < (number1 a){ return x>a.x;//最小值优先 } }; struct number2{ int x; bool operator < (number2 a){ return x<a.x;//最大值优先 } }; priority_queue<number1>que5; //最小优先级队列 priority_queue<number2>que6; //最大优先级队
完。