优先队列: 与队列的用法是一样的,优先队列内部是通过堆来排序实现的,
#include<iostream> #include <queue> using namespace std; int main(){ //默认是大顶堆 priority_queue<int> large; // 这两种写法是相同的 priority_queue<int,vector<int>, less<int>> large; // 第一个int表示队列的元素类型,这里一定要有空格,不然成了右移运算符↓↓ priority_queue<int, vector<int>, greater<int> > small; //小顶堆,升序 for (int i = 0; i < 5; i++){ large.push(i); small.push(i); } while (!large.empty()){ cout << large.top() << ' '; large.pop(); } //输出结果:4 3 2 1 0 cout << endl; while (!small.empty()){ cout << small.top() << ' '; small.pop(); } //输出结果:0 1 2 3 4 return 0; }
leetcode 优先队列示例:
https://github.com/AntonioSu/leetcode/blob/master/problems/239.SlidingWindowMaximum.md
https://github.com/AntonioSu/leetcode/blob/master/problems/295.FindMedianfromDataStream.md