简单重载运算符in priority_queue By cellur925
Posted nopartyfoucaodong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单重载运算符in priority_queue By cellur925相关的知识,希望对你有一定的参考价值。
我们都知道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的主要内容,如果未能解决你的问题,请参考以下文章