码迷,mamicode.com
首页 > 其他好文 > 详细

简单重载运算符in priority_queue By cellur925

时间:2018-10-01 11:57:22      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:而在   结构体类型   nbsp   大根堆   col   意义   queue   amp   priority   

我们都知道priority_queue是大根堆。

一、变成小根堆

  • 法一:把元素的相反数丢进堆中
  • 法二
    priority_queue<int,vector<int>,greater<int> >q;

     

二、重载运算符

有时候我们的优先队列中的元素可能是结构体类型的。这时候我们可能需要重载一下运算符。

比如这样

struct cellur{
    int val,num;
};
priority_queue<cellur>q;
bool operator < (const cellur &x,const cellur &y)
{
    return x.val>y.val;
}

这个意思是使堆中元素按val从小到大排序。这和普通的排序函数不太一样,它的意义是反着的。如果将$return$中的那句放入一个普通的bool cmp函数,那么意思是按val从大到小排序。

而在这里,priority_queue会认为大的更小,小的更大。

 

简单重载运算符in priority_queue By cellur925

标签:而在   结构体类型   nbsp   大根堆   col   意义   queue   amp   priority   

原文地址:https://www.cnblogs.com/nopartyfoucaodong/p/9734314.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!