STL的set(map)中默认小的在前面;
而priority_queue却是大的在前面。
set和map:底层都是红黑树 less<> 最小堆,greater<>是最大堆。 默认是less。
make_heap: less<>() 展现出来的是最大堆, greater<>()展现出来是最小堆。 默认是less。
priority_queue: 底层是使用heap实现的,所以表现出来的特性和heap一致。
less<>() 展现出来的是最大堆, greater<>()展现出来是最小堆。 默认是less。
如何理解?
我们可以理解为如果使用less调整的堆进行排序,最后是一个递增序列,所以才是大根堆,大根堆每次把根节点和末节点交换。