参考文章:
https://blog.csdn.net/stone_fall/article/details/89010656
https://blog.csdn.net/fengbingchun/article/details/70505628
std::priority_queue:在优先队列中,优先级高的元素先出队列,并非按照先进先出的要求,类似一个堆(heap)。其模板声明带有三个参数,priority_queue<Type, Container, Functional>, 其中Type为数据类型,Container为保存数据的容器,Functional为元素比较方式。
Container必须是用数组实现的容器,比如 vector, deque. STL里面默认用的是vector. 比较方式默认用operator< , 所以如果把后面两个参数缺省的话,优先队列就是大顶堆,队头元素最大。
所以小顶堆和大顶堆定义如下:
//priority_queue<int, vector<int>, less<int>> max_heap;
priority_queue<int> max_heap;
priority_queue<int, vector<int>, greater<int>> min_heap;