priority_queue<Type, Container, Functional>
priority_queue<int> a; // 和b一样
priority_queue<int, vector<int>, less<int> > b; // 大顶堆
priority_queue<int, vector<int>, greater<int> > c; // 小顶堆
使用:
例如b,每次pop() 都会把最大的元素pop出来——也就是说,如果队列的大小是n,就是把第n小的元素pop出来(刷题tip)
再例如,多个有序链表合并,使用自定义的优先队列
自定义:
struct snum{
int val;
int cnt;
bool in;
};
struct cmp{
bool operator () (snum a, snum b) {
return a.cnt < b.cnt;
}
};
priority_queue<snum, vector<snum>, cmp> q;