头文件 : include <queue>
定义 : priority_queue<Type, Container, Functional>
默认 : == 大顶堆 ==,比拟形式默认用 operator<
,所以如果把前面 2 个参数缺省的话,优先队列就是大顶堆(降序),队头元素最大
个别应用 :
// 留神 >> 和 > >, c++11 之后能够不必加空格
// 大顶堆
priority_queue<int, vector<int>, less<int> > q;
// 小顶堆
priority_queue<int, vector<int>, greater<int> > q;
//greater 和 less 是 std 实现的两个仿函数
//(就是使一个类的应用看上去像一个函数。其实现就是类中实现一个 operator(),这个类就有了相似函数的行为,就是一个仿函数类了)// pair<int, int> 默认大顶堆,先比拟第一个,再比拟第二个;
priority_queue<pair<int, int> > q;
// 2 5
// 2 4
// 1 6
// 自定义优先级
// struct Node // 运算符重载 <
struct Node{
int x;
Node(int a) : x(a){}
bool operator<(const Node& a) const // 返回 true 时 a 的优先级高
{return x < a.x; // 大顶堆}
};