优先队列

优先队列有两个分支,一个是小根堆,一个是大根堆。

这是一个优先队列的定义:

priority_queue<int> q;

默认是大根堆。

大根堆,也就是堆顶是最大的数,按着降序排到堆底。

小根堆,也就是堆顶是最小的数,按着升序排到堆底。

大根堆定义:

priority_queue<int> q;

由大根堆转小根堆有三种方法

一、在大根堆内推入负数(使用时也要加负号)

二、在定义上动手脚:

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

三、重载运算符:

struct point{
    int b;
    bool operater<(const point& B)const
    {return B.b<BIG_MOD;}
};

优先队列操作:

定义:

priority_queue<int> q;

插入:

q.push()

删除:

q.pop();

堆顶:

q.top();

 

posted @ 2023-04-29 22:43  王浩泽  阅读(68)  评论(0编辑  收藏  举报