一、priority_queue介绍
👉 cplusplus官网 : priority_queue的说明
优先级队列和普通的队列不是一个概念,普通的queue遵守先进先出的规则,而优先级队列遵守优先级最高的先出,本质上就是堆排
二、priority_queue使用
我们给上一组数据,调用top函数进行打印输出发现最大值优先输出,默认降序
如果要排成升序呢?
官网提供了模版参数,我们发现这里传的不是类型而是对象,如果要排升序通过传greater,默认是less
三、模拟实现
我们在实现前需要注意,模版是不支持分离编译的,因此我们在hpp里面进行声明和定义
首先默认创建一个大堆,这里就不再赘述概念,可以参考下面的链接
👉 堆排详细说明
//大堆
template<class T, class Container = vector<T>, class Compare = Less<T> >
class priority_queue{
public:
void push(const T& x){
_con.push_back(x);
AdjustUp(_con.size()