排序大手子!!!

\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/

优先队列,就是一个二叉堆……

他永远遵循排序原则!

简单到他只有五个函数!!!

函数名 功能
top() 给出队头 这不是栈吗?
push() 把元素放入队列
pop() 让队头出队
size() 给出队列长度
empty() 判断队列是否为空

我们只需把元素放入队列,他就能给我们自动排序

但是他是默认从大到小排……

怎么让它从小到大排呢?

1.标准方法

priority_queue<int,vector<int>,greater<int>>q;

直接定义小根堆

那struct咋办?

2.结构体专用方法!

struct Node{
    int x,y;
    bool operator<(Node k)const{
        if(x==k.x) return y>k.y;
        return x>k.x;
    }
}

定义如何比较结构体,sort都通用!

太强了👍