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

STL容器适配器之<priority_queue>

文章目录

    • 测试环境
    • priority_queue介绍
    • 头文件
    • 模块类定义
    • 对象构造
    • 元素访问
    • 元素插入和删除
    • 容器大小
    • 迭代器
    • 其他函数

测试环境

系统:ubuntu 22.04.2 LTS 64位
gcc版本:11.3.0
编辑器:vsCode 1.76.2

priority_queue介绍

  1. 容器适配器。
  2. 支持在末端插入元素,在首端删除元素。
  3. 不支持随机访问。
  4. 先进先出规则(FIFO)
  5. 可以设置元素的优先级最高优先级的元素排在队头
  6. 默认基础容器为vector,还可以使用deque作为基础容器,或者支持front()、pop_back()、push_buck()的其他容器。

头文件

#include <queue>

模块类定义

template<typename _Tp, typename _Sequence = vector<_Tp>,typename _Compare  = less<typename _Sequence::value_type> >class priority_queue{};

_Tp:表示存储的元素数据类型
_Sequence:基础容器,默认为vector。
_Compare:排序方式,可通过函数对象来自定义

对象构造

/*默认构造函数*/
std::priority_queue<int> priorityque1;/*拷贝构造函数*/
std::priority_queue<int> priorityque2(priorityque1);/*指定基础容器*/
std::priority_queue<std::string, std::deque<std::string> > priorityque3;/*指定基础容器并指定排序方式*/
std::priority_queue<std::string, std::deque<std::string> ,std::greater<std::string> > priorityque4;/*指定范围构造*/
std::vector<int> vct1({2,3,1,4,6,5,9,8,7});
std::priority_queue<int> priorityque5(vct1.begin(),vct1.end());

元素访问

函数名返回值功能
top()首元素的常量引用获取首元素,队列为空时返回值不确定
/*队首元素访问*/
std::cout << priorityqueTest.top() << std::endl;

元素插入和删除

函数返回值功能
pop()删除队列头元素
push()队列尾插入元素
emplace()队列尾插入元素
std::priority_queue<int> priorityqueTest;
/*元素插入*/
priorityqueTest.push(88);/*元素插入*/
priorityqueTest.emplace(8);/*队首元素删除*/
priorityqueTest.pop();  

容器大小

函数返回值功能
empty()bool判断当前容器是否为空,为空返回true,否则返回false
size()std::size_t获取当前容器中的元素数量
/*判断队列是否为空*/
std::cout << std::boolalpha << priorityqueTest.empty() << std::endl;
/*获取队列中元素数量*/
std::cout << priorityqueTest.size() << std::endl;

迭代器

不支持

其他函数

函数名返回值功能
swap()交换两个容器的元素
/*交互两个容器元素的值,无返回值*/
std::priority_queue<int> priorityqueSwap1;
priorityqueSwap1.push(1);
priorityqueSwap1.push(2);
priorityqueSwap1.push(3);
std::priority_queue<int> priorityqueSwap2;
priorityqueSwap2.push(4);
priorityqueSwap2.push(5);
priorityqueSwap2.push(6);
/*方式1, priorityqueSwap1={6,5,4}, priorityqueSwap2={3,2,1}*/
priorityqueSwap1.swap(priorityqueSwap2);/*priorityqueSwap1={3,2,1}, priorityqueSwap2={6,5,4}*/
std::swap(priorityqueSwap1,priorityqueSwap2);

相关文章:

STL容器适配器之<priority_queue>

文章目录测试环境priority_queue介绍头文件模块类定义对象构造元素访问元素插入和删除容器大小迭代器其他函数测试环境 系统&#xff1a;ubuntu 22.04.2 LTS 64位 gcc版本&#xff1a;11.3.0 编辑器&#xff1a;vsCode 1.76.2 priority_queue介绍 容器适配器。支持在末端插入…...

线程——线程同步

案例&#xff1a;卖票 需求&#xff1a;某电影院目前正在上映国产大片&#xff0c;共有100张票&#xff0c;而它有三个窗口卖票&#xff0c;请设计一个程序模拟该电影院卖票 思路&#xff1a; 定义一个类SellTicket实现Runnable接口&#xff0c;里面定义一个成员变量&#xff…...

安卓录屏使用VirtualDisplay虚拟屏幕;MediaRecorder,媒体录影机;

1.跟截屏一样&#xff0c;判断权限&#xff0c;然后在onActivityResult里面给mediaProjection赋能&#xff1b; 2.初始化录像机&#xff1a; //初始化Recorder录像机 fun initRecorderStart() { //新建Recorder val displayMetrics DisplayMetrics() val width displayMetri…...

Java FileChannel文件的读写实例

一、概述&#xff1a; 文件通道FileChannel是用于读取&#xff0c;写入&#xff0c;文件的通道。FileChannel只能被InputStream、OutputStream、RandomAccessFile创建。使用fileChannel.transferTo()可以极大的提高文件的复制效率&#xff0c;他们读和写直接建立了通道&#x…...

2023 年男生还推荐报计算机专业吗?

计算机专业确实是一个非常热门的专业&#xff0c;就业前景也很广阔。 但是&#xff0c;近些年随着各个大学对计算机专业及其相关专业疯狂扩招&#xff0c;而且每年的毕业人口都在增多&#xff0c;行业是根本容纳不下的&#xff0c;就业竞争力度也急剧上升。因此&#xff0c;选…...

【华为OD机试真题】积木最远距离(相同数字的积木游戏1)(javapython)

相同数字的积木游戏1 知识点数组循环map 时间限制:1s 空间限制:256MB 限制语言:不限 题目描述: 小华和小薇一起通过玩积木游戏学习数学。 他们有很多积木,每个积木块上都有一个数字,积木块上的数字可能相同。 小华随机拿一些积木挨着排成一排,请小薇找到这排积木中数…...

STM32F103RCT6驱动SG90舵机-完成正反转角度控制

一、SG90舵机介绍 SG90是一种微型舵机&#xff0c;也被称为伺服电机。它是一种小型、低成本的直流电机&#xff0c;通常用于模型和机器人控制等应用中。SG90舵机可以通过电子信号来控制其精确的位置和速度。它具有体积小、重量轻、响应快等特点&#xff0c;因此在各种小型机械…...

【4.13(补)】二叉搜索树的遍历、插入、删除

文章目录二叉搜索树的最近公共祖先二叉搜索树中的插入操作删除二叉搜索树中的节点二叉搜索树的最近公共祖先 235. 二叉搜索树的最近公共祖先 - 力扣&#xff08;LeetCode&#xff09; 因为二叉搜索树是有序的&#xff0c;第一次找到p和q中间的值&#xff0c;就是最近的公共祖先…...

Web 攻防之业务安全:Callback自定义测试(触发XSS漏洞)

Web 攻防之业务安全&#xff1a;Callback自定义测试 业务安全是指保护业务系统免受安全威胁的措施或手段。广义的业务安全应包括业务运行的软硬件平台&#xff08;操作系统、数据库&#xff0c;中间件等&#xff09;、业务系统自身&#xff08;软件或设备&#xff09;、业务所提…...

Java访问底层操作系统

native方法定义&#xff1a; 简单地讲&#xff0c;一个Native Method就是一个java调用非java代码的接口。一个Native Method是这样一个java的方法&#xff1a;该方法的实现由非java语言实现&#xff0c;比如C。这个特征并非java所特有&#xff0c;很多其它的编程语言都有这一机…...

Python 进阶指南(编程轻松进阶):十六、面向对象编程和继承

原文&#xff1a;http://inventwithpython.com/beyond/chapter16.html 定义一个函数&#xff0c;并从几个地方调用它&#xff0c;可以省去复制和粘贴源代码的麻烦。不复制代码是一个很好的实践&#xff0c;因为如果你需要修改它&#xff08;无论是为了修复一个错误还是添加新特…...

【计算机系统结构】第一章 计算机系统结构基本概念

文章目录第一章 计算机系统结构基本概念1.1 计算机系统结构的概念1.2 计算机体系结构的发展1.3 系统结构中并行性的发展1.4 系统结构的设计1.5 定量分析技术基础第一章 计算机系统结构基本概念 课程内容 A I P S N 工业革命 1.1 计算机系统结构的概念 引言 第一台通用计算机 …...

e2fsprogs logsave Ubuntu 安装失败 unable to make backup link of ‘./usr/bin/chattr‘

最近给服务器从 Ubuntu 18.04 LTS 升级到 20.04 LTS&#xff0c;过程中崩溃&#xff0c;重新尝试执行&#xff0c;提示依赖错误。这时候 apt install 所有的东西都会报错&#xff0c;提示依赖不满足。&#xff08;这里的报错忘了复制了&#xff09;执行 apt upgrade 也是一样。…...

在排序数组中查找元素的第一个和最后一个位置(二分查找进阶)

在写这个题目之前需要大家自行看一下我之前写的博客有关二分查找思想,如何判断什么时候使用二分查找以及边界值的确定:二分查找思想力扣实例_徐憨憨&#xff01;的博客-CSDN博客 题目:给你一个按照非递减顺序排列的整数数组 nums&#xff0c;和一个目标值 target。请你找出给定…...

1 Nginx跨域配置

跨域问题在之前的单体架构开发中&#xff0c;其实是比较少见的问题&#xff0c;除非是需要接入第三方SDK时&#xff0c;才需要处理此问题。但随着现在前后端分离、分布式架构的流行&#xff0c;跨域问题也成为了每个Java开发必须要懂得解决的一个问题。 跨域问题产生的原因 产…...

ChatGTP如此强大,我们普通人如何利用它来赚钱?

我从效率提升的角度&#xff0c;分享了我这段时间看到的、用到的&#xff0c;以及思考的一些内容。 最近这段时间&#xff0c;我算是密集的学习。不得不说&#xff0c;优质的资料在推特和油管上特别多&#xff0c;看科技大佬的分享真是一种享受。 很多大神也会录制各种详细的…...

常见的九种大数据分析模型

常见的9种大数据分析模型分别为&#xff1a; 事件分析、 属性分析、 渠道分析、 Session分析、 留存分析、 归因分析、 漏斗分析、 路径分析、 分布分析 1、【事件分析】 事件分析&#xff0c;是指用户在 APP、网站等应用上发生的行为&#xff0c;即何人&#xff0c;何时&…...

射频识别(RFID)技术的基本原理、特性、发展和应用

何谓射频识别 随着高科技的蓬勃发展&#xff0c;智能化管理已经走进了人们的社会生活&#xff0c;一些门禁卡、第二代身份证、公交卡、超市的物品标签等&#xff0c;这些卡片正在改变人们的生活方式。其实秘密就在这些卡片都使用了射频识别技术&#xff0c;可以说射频识别已成…...

3.3 二维随机变量条件分布

学习目标&#xff1a; 要学习二维随机变量的条件分布&#xff0c;我可能会采取以下步骤&#xff1a; 复习边缘分布和联合分布&#xff1a;首先需要了解二维随机变量的边缘分布和联合分布的概念以及相应的公式。 复习条件概率&#xff1a;学习条件概率的定义和计算公式&#x…...

Kafka——概述、安装及命令行操作

文章目录一、概述1.1、定义1.2、如何运作&#xff1f;1.3、传统消息队列的应用场景1.4、消息队列的两种模式1.5、Kafka的基础架构二、安装&#xff08;需要安装zookeeper&#xff09;三、常用命令行操作3.1、主题命令行操作3.2、生产者命令行操作3.3、消费者命令行操作一、概述…...

VisionPro实战:CogGraphicCollection在工业检测中的5个高效用法(附代码)

VisionPro实战&#xff1a;CogGraphicCollection在工业检测中的5个高效用法&#xff08;附代码&#xff09; 在工业自动化领域&#xff0c;机器视觉系统正变得越来越智能和高效。作为康耐视VisionPro平台的核心组件之一&#xff0c;CogGraphicCollection为工程师提供了强大的图…...

告别黑盒调试:为VS2022和Halcon HImage定制一个带暗色主题的视觉化调试器

为VS2022和Halcon HImage打造沉浸式暗色调试器&#xff1a;从UI优化到高效开发实践 在计算机视觉开发领域&#xff0c;Halcon凭借其强大的图像处理能力成为工业检测、医疗影像等场景的首选工具。然而&#xff0c;长时间面对传统调试界面容易导致视觉疲劳&#xff0c;影响开发效…...

以太网MAC与PHY接口技术详解

以太网PHY、MAC及其通信接口技术解析1. 以太网接口架构概述1.1 基本组成结构以太网接口电路从硬件角度可分为两大核心组件&#xff1a;MAC控制器&#xff08;Media Access Control&#xff09;&#xff1a;负责数据链路层的媒体访问控制PHY芯片&#xff08;Physical Layer&…...

OpenClaw密码管理:nanobot安全存储与自动填充方案

OpenClaw密码管理&#xff1a;nanobot安全存储与自动填充方案 1. 为什么需要本地化的密码管理方案 去年的一次数据泄露事件让我彻底放弃了所有云端密码管理器。当时我使用的某知名商业工具突然弹出安全警报&#xff0c;提示"您的部分密码可能已被未授权访问"。虽然…...

ST7565SPI嵌入式LCD驱动库:轻量、可移植、零内存分配

1. ST7565SPI 驱动库概述ST7565 是 Sitronix 公司推出的单芯片图形点阵 LCD 控制器&#xff0c;广泛应用于工业人机界面、便携式仪器仪表、智能穿戴设备等对功耗、成本与显示质量有综合要求的嵌入式场景。其典型分辨率为 12864 像素&#xff0c;内置 12864 bit 显示 RAM&#x…...

多项式朴素贝叶斯

多项式朴素贝叶斯&#xff08;二分类&#xff09; 题意 实现一个 Multinomial Naive Bayes 二分类器。 train&#xff1a;二维列表&#xff0c;每行最后一列为标签 y \in \{0,1\}&#xff0c;其余列为非负整数词频test&#xff1a;二维列表&#xff0c;仅包含词频特征&#xff…...

自动化立体仓库堆垛机设计(设计说明书+17张CAD图纸+开题报告+任务书+实习报告+中期检查报告+外文翻译)

自动化立体仓库堆垛机作为现代物流系统的核心设备&#xff0c;其设计需兼顾机械结构强度、运动控制精度与系统稳定性。该设计通过三维建模与力学仿真验证&#xff0c;确保堆垛机在高速运行时的结构可靠性&#xff0c;同时优化货叉伸缩机构与载货台升降导轨的配合间隙&#xff0…...

Linux文件系统架构与缓存机制解析

Linux文件系统架构与缓存机制深度解析1. 文件系统核心架构1.1 文件系统基本组织形式Linux文件系统采用分层结构设计&#xff0c;主要包含以下核心组件&#xff1a;块存储机制&#xff1a;硬盘被划分为固定大小的块&#xff08;默认4KB&#xff09;&#xff0c;文件数据分散存储…...

AceCommon:Arduino嵌入式零堆分配轻量C++工具库

1. AceCommon 库概述&#xff1a;面向嵌入式 Arduino 的轻量级底层工具集AceCommon 是一个专为资源受限的微控制器平台&#xff08;尤其是 Arduino 生态&#xff09;设计的零依赖、低开销 C 工具库。其核心设计哲学是“小而精、无侵入、可复用”。与常见的功能臃肿、依赖繁杂的…...

手柄硬件校准与操控优化:从故障排查到竞技级设置的实战手册

手柄硬件校准与操控优化&#xff1a;从故障排查到竞技级设置的实战手册 【免费下载链接】DS4Windows Like those other ds4tools, but sexier 项目地址: https://gitcode.com/gh_mirrors/ds/DS4Windows 在《艾尔登法环》的 boss 战中&#xff0c;角色总是不受控制地缓慢…...