admin管理员组

文章数量:1623802

使用时包含头文件#include<queue>
常用于排序问题,将优先级高的先输出

基本操作

和queue相同

top(): 访问队头元素
empty(): 队列是否为空
size(): 返回队列内元素个数
push ():插入元素到队尾 (并排序)
emplace(): 原地构造一个元素并插入队列
pop(): 弹出队头元素
swap(): 交换内容

定义比较函数

priority_queue定义:priority_queue<Type, Container, Function>

  • Type: 定义队列元素类型,可以是基本数据类型,也可以是复杂数据类型(对象)
  • Container:容器类型,即优先级队列基于什么数据类型来实现,可以是vector或者deque,默认情况下是vector
  • Function:指比较函数,用来指定构造的是大顶堆(元素从大到小输出)还是小顶堆(元素从小到大输出),基本元素可以使用less或者greater函数,但是对于对象这种负责结构,需要自己设计比较规则。

演示greater和less

小贴士:对于经常记混less和greater哪个是大顶堆哪个是小顶堆的童鞋,可以这样记,less和greater都是英文单词(little,great)的比较级,既然是比较级,那我们可以这样记(以less为例),理解为后一个比前一个小(越来越小),便可以轻松记住。

#include<iostream>
#include<queue>
using namespace std;

int main(){
   
    //默认
    priority_queue<int>q1;
    //大顶堆,从大到小排列
    priority_queue<int,vector<int>,less<int>>q2;
    //小顶堆,从小到大排列
    priority_queue<int,vector<int>,greater<int>>q3;
    for (int i = 0; i < 6; i++)
    {
   
        q1.push(i);
        q2.push(i)

本文标签: 优先级队列详解priorityqueue