和一般的queue不一样, 优先队列的“最大”元素永远位于队首, 之所以“最大”加了引号,是因为: 在默认情况下, 这个“最大”就是指最大, 但程序猿自己可以对"最大"给出新的定义, 此时, “最大”可能是最小。
下面, 我们看看默认情况下的优先队列:
#include <iostream>
#include <queue> // 注意, 不是#include<priority_queue>
using namespace std;
int main()
{
priority_queue<int> pq;
pq.push(2);
pq.push(1);
pq.push(4);
pq.push(3);
while(!pq.empty())
{
cout << pq.top() << endl; // 4 3 2 1
pq.pop();
}
return 0;
}
上面已经说了, 用户可以自定义“最大”。如果大家需要用到自定义的“最大”, 可以找度娘或者谷哥哥, 比如: 可以利用重载“<”操作符来定义优先级别, 也可以利用重载"()"来定义优先级。
好吧, priority_queue先说到这里。