优先队列(初了解)

优先队列是自动排序

参考https://blog.csdn.net/qq_19656301/article/details/82490601

头文件

#include<queue>
using namespace std;

声明格式

priority_queue<结构类型> 队列名; 

比如(默认是从大到小的)

priority_queue <int> i;
priority_queue <double> d;

基本操作

q.size();//返回q里元素个数
q.empty();//返回q是否为空,空则返回1,否则返回0
q.push(k);//在q的末尾插入k
q.pop();//删掉q的第一个元素
q.top();//返回q的第一个元素
q.back();//返回q的末尾元素

 

默认的优先队列(结构体,重载小于)

在结构体里写是这个

struct node
{
    int x,y;
    bool operator < (const node & a) const
    {
        return x<a.x;
    }
};

不在结构体里

bool operator< (const node &a, const node &b){
    return a.x < b.x ;
}

priority_queue <int,vector<int>,less<int> > p;//从大到小
priority_queue <int,vector<int>,greater<int> > q;//从小到大

平时如果用从大到小不用后面的vector<int>,less<int>,可能到时候要改成从小到大,你反而会搞忘怎么写greater<int>,反而得不偿失

 

上一篇:Mybatis学习第20节 -- 嵌套结果


下一篇:【算法笔记第6.6节 priority_queue 】问题 A: 任务调度(有点难)