0%

优先队列

C++ STL里的优先队列priority_queue底层时用堆实现的。

使用时简单的小顶堆/大顶堆可以如下定义:

1
2
3
priority_queue<int,vector<int>,greater<int> > q;  //小顶堆

priority_queue<int,vector<int>,less<int> > q; //大顶堆

但是greater和less只适用于简单的元素类型,对于复杂元素(比如自定义的结构体)需要重载运算符<。

1
2
3
4
5
6
7
struct node{
int num;
int dis;
bool operator <(const node &a) const{
return a.dis<dis; // 小顶堆
}
};

Welcome to my other publishing channels