頭文件:#include <queue>
一.申明方式
std::priority_queue<T> q; std::priority_queue<T, std::vector<T>, cmp> q;
1.普通方法:
priority_queue<int> q; //大的優先級高
priority_queue<int,vector<int>, greater<int> > q; //小的優先級高
2.自定義比較函數

struct cmp { bool operator ()(int x, int y) { return x > y; // 小的優先級高 } }; priority_queue<int, vector<int>, cmp> q;
3.友元函數重載<

struct node { int x,y; friend operator < (node a, node b) { if(a.x!=b.x)return a.x > b.x; //x小的優先級高 return a.y < b.y; //y大的優先級高 } }; priority_queue<node>q;
二.常用函數
empty() //是否為空
pop() //出隊
push(a) //入隊
size() //長度
top() //取優先級最大的元素
三.時間復雜度
優先級隊列用堆實現,只是需要構建初始堆,時間復雜度是O(n)
插入和刪除只是修改了堆頂和堆底,不需要所有的都排序,只是需要再次調整好堆,因此時間復雜度都是O(log2n)