大根堆
priority_queue<int>a;
empty( ) //判断一个队列是否为空
pop( ) //删除队顶元素
push( ) //加入一个元素
size( ) //返回优先队列中拥有的元素个数
top( ) //返回优先队列的队顶元素
大根堆和小根堆优先级
priority_queue<int,vector<int>,greater<int> >q;
//大根堆
priority_queue<int,vector<int>,less<int> >q;
//小根堆
自定义优先级
同样我们可以自定义一个函数来自定义优先级。
struct cmp1
{
bool operator()(int &a,int &b)
{
return a<b;
}
};
priority_queue<int,vector<int>,cmp1>q1;
//小根堆
struct cmp2
{
bool operator()(int &a,int &b)
{
return a>b;
}
};
priority_queue<int,vector<int>,cmp1>q1;
//大根堆
还可以:
struct node
{
int u;
bool operator < (const node &a)const
{
return u>a.u;
}
}
priority_queue<node>q;
//小根堆
当然还可以自己定义其他的花样。