优先队列与结构体运算符重载
使用结构体实现:
如果优先队列使用结构体,可以用结构体内运算符重载实现。
?
根据需求变化:- 如果想要通过变量
value
的值实现从从大到小
排列,使用<
运算符。 - 如果想要通过变量
value
的值实现从从小到大
排列,使用>
运算符。
我们可以这么理解,使用<
运算符,则当a.value<b.value
成立时,node b>node a
成立,优先队列按照优先级从大到小进行排列,故value值大
的node b排在前面。
使用>
运算符,则当a.value>b.value
成立时,node b>node a
成立,优先队列按照优先级从大到小进行排列,故value值小
的node b排在前面。
struct node
{
ll value,no;
friend bool operator < (node a,node b)
{
return a.value ? b.value;//?根据具体要求实现
}
};
不使用结构体实现:
//升序队列
priority_queue <int,vector<int>,greater<int> > q;
//降序队列
priority_queue <int,vector<int>,less<int> >q;