首页 > 编程语言 >C++——优先级队列(priority_queue)

C++——优先级队列(priority_queue)

时间:2022-11-05 16:00:36浏览次数:51  
标签:queue 优先级 函数 队列 数据类型 C++ priority

其为队列需要包含头文件#include,其与queue的不同之处在于,可以自定义数据的优先级,让优先级高的排在队列的前面,优先出队;
优先队列具有队列的所有特性,包括基本操作,只是在此基础上添加内部排序,实质上由堆实现

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

用法priority_queue<Type, Container, Functional>
Type:数据类型
Container: 容器类型,必须是用数组实现的容器比如:vector,deque等等,STL里面默认的是vector
Functional:比较方式(仿函数)
当需要用自定义的数据类型时才需要传入这三个参数,使用基本类型时,只需要传入数据类型,默认是大顶堆;

//升序队列
priority_queue <int,vector<int>,greater<int> > q;
//降序队列
priority_queue <int,vector<int>,less<int> >q;

//greater和less是std实现的两个仿函数(就是使一个类的使用看上去像一个函数。其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类了)

标签:queue,优先级,函数,队列,数据类型,C++,priority
From: https://www.cnblogs.com/dh2021/p/16860370.html

相关文章

  • 初步认识c++之命名空间详解(千字长文带你刨析你命名空间的细节)
    初识c++之命名空间详解前言:c++是在c语言的基础上进一步发展出来的用于弥补c语言缺陷的语言,是c语言的超集,添加了很多新的特性,使其编程更加方便!下面就让我们开始初步认识c++......
  • C++《面向对象程序设计课程设计》
    C++《面向对象程序设计课程设计》《面向对象程序设计课程设计》课程说明适用专业:计算机科学与技术课程周数:5周一、根据计算机科学与技术专业人才培养方案制订。(一)课程......
  • C++ 命名类型转换
    目录​​传统艺能......
  • C++ 智能指针深剖
    目录​​传统艺能......
  • C++ ofstream学习
    转自:https://blog.csdn.net/kingstar158/article/details/68593791.介绍#include<fstream>ofstream//文件写操作内存写入存储设备ifstream//文......
  • C++ 不知树系列之二叉排序树(递归和非递归遍历、删除、插入……)
    1.概念二叉树是树结构中具有艳明特点的子类。二叉树要求树的每一个结点(除叶结点)的子结点最多只能有2个。在二叉树的基础上,继续对其进行有序限制则变成二叉排序树。二......
  • C++调用HTTP(HttpSendRequest)如何设置延时
    1、解决办法:DWORDdwTimeout=3000;//3s bRet=InternetSetOption(hRequest,INTERNET_OPTION_CONNECT_TIMEOUT,&dwTimeout,sizeof(dwTimeout)); if(!bRet){......
  • JAVA并发容器-ConcurrentLinkedQueue 源码分析
    在并发编程中,有时候需要使用线程安全的队列。如果要实现一个线程安全的队列有两种方式:一种是使用阻塞算法,另一种是使用非阻塞算法。使用阻塞算法的队列可以用一个锁(入队和......
  • C++智能指针:weak_ptr实现详解
    文章目录​​weak_ptr描述​​​​声明​​​​作用​​​​原理实现​​​​函数成员使用​​​​总结​​weak_ptr描述声明头文件:​​<memory>​​​模版类:​​template......
  • C++设计一个类:不能被继承
    C++如何设计一个不能被继承的类?我们首先想到,不能被继承,那把构造函数和析构函数设计成私有的不就行了,这样的话子类不能访问父类的构造函数和析构函数,也就无法继承了。然而这......