1、priority_queue默认是什么堆?是大根堆?
2、有几种方法将其变为小根堆?
方法一:用stl自带的小根堆priority_queue<typename, vector<typename>, greater<typename>>
方法二:对于数字,如果我们不加处理的放入堆中,那么将是大根堆的存储方式,如果我们将所有数字取负数,这时候我们就能得到小根堆的存储方式了’
方法三:可以通过重载比较符号实现。sort和priority_queue的自定义函数比较是相反的,意思就是如果用<
在sort中进行排序,那么我们得到就是从小到大的顺序,但是priority_queue得到的是大根堆。所以这就告诉我们可以用过重载<
为>
达到小根堆的效果。
struct `` {
...
bool operator< (..) const {
return ... > ...
}
}