当前位置: 首页 > news >正文

STL——priority_queue的使用(快速入门详细)

目录

前言

一、基本知识

二、使用


前言

priority_queue是在queue库里的,所以使用的时候要包含queue头文件。使用方法和堆类似,因为它的底层其实就是大根堆。


一、基本知识

优先队列

优先级队列是一种容器适配器,根据一些严格的弱排序标准,专门设计为它的第一个元素始终是它所包含的元素中最大的一个。
此上下文类似于堆,可以随时插入元素,并且只能检索最大堆元素(优先级队列中顶部的元素)。
优先级队列作为容器适配器实现,容器适配器是使用特定容器类的封装对象作为其底层容器的类,提供一组特定的成员函数来访问其元素。元素从特定容器的“背面”弹出,这称为优先级队列的顶部。

二、使用

优先级队列默认使用vector作为其底层存储数据的容器,在vector上又使用了堆算法将vector中元素构造成堆的结构,因此priority_queue就是堆,所有需要用到堆的位置,都可以考虑使用priority_queue。注意:默认情况下priority_queue是大堆。

函数声明接口说明
priority_queue()/priority_queue(first, last)构造一个空的优先级队列
empty( )检测优先级队列是否为空,是返回true,否则返回false
top( )返回优先级队列中最大(最小元素),即堆顶元素
push(x)在优先级队列中插入元素x
pop()删除优先级队列中最大(最小)元素,即堆顶元素

使用方法很简单,一段代码快速掌握:

#include<iostream>
#include<queue>
using namespace std;
int main()
{priority_queue<int> vv;//初始化vv.push(4);//压入数据vv.push(2);vv.push(1);vv.push(3);while (!vv.empty())//检查是否为空{cout << vv.top() << " ";//访问数据vv.pop();//弹出数据}cout << endl;//如果是要小的优先级高的话priority_queue<int, vector<int>, greater<int>> aa;aa.push(4);aa.push(2);aa.push(1);aa.push(3);while (!aa.empty()){cout << aa.top() << " ";aa.pop();}cout << endl;return 0;
}

可以运行一下看看结果是什么?

http://www.dtcms.com/a/351632.html

相关文章:

  • 【硬件-笔试面试题-60】硬件/电子工程师,笔试面试题-60,(知识点:CAN总线通信原理)
  • 红黑树下探玄机:C++ setmultiset 的幕后之旅
  • Python在语料库建设中的应用:文本收集、数据清理与文件名管理
  • LeetCode刷题记录 | 长度最小的子数组 螺旋矩阵II
  • curl get post
  • GPMall 项目单机部署全流程GPMall:Redis、MariaDB、Kafka、Nginx 一步到位
  • Java微服务AI集成指南:LangChain4j vs SpringAI
  • 在线教育系统源码助力教培转型:知识付费平台开发的商业实践
  • Hyperledger Fabric官方中文教程-改进笔记(十七)-编写第一个链码
  • 售价2.5 万元的 Jetson Thor,能否开启人形机器人商业化新局面?
  • 利用AI进行ArcGISPro进行数据库的相关处理?
  • 如何利用ArcGIS探究环境与生态因子对水体、土壤、大气污染物的影响?
  • ROS2一键安装脚本:ROS2安装教程,快速搭建开发环境
  • 请求接口302 Moved Temporarily
  • 【数据价值化】数据资产入表指南:核心准则与实操路径
  • C语音初阶————指针2
  • .NET 6.0 日志处理之Serilog 写入到sql server(一)
  • OOM问题排查思路及解决方案
  • 【Notepad++免费版下载安装教程(附安装包)2025最新整理】
  • 如何用Wireshark捕获当前房间路由器和主机的数据包
  • iOS 26 正式版即将发布,Flutter 完成全新 devicectl + lldb 的 Debug JIT 运行支持
  • 剖析graph-rag中最核心的一步:切片文本如何输入到大模型并且构建整体的关系
  • 食用油平台:油香里的生活哲学课
  • 使用 Vue 3 <script setup> 语法实现基于 token 的登录功能
  • 100种交易系统(4)顺势回调开仓
  • android多线程与线程间通信
  • python-多线程(笔记)(持续更新)
  • 基于dify+ollama+bge组合搭建本地知识库
  • 10分钟快速搭建 SkyWalking 服务
  • 【Apache MXNet】