【C++】priority_queue优先队列
头文件#include <queue>
优先队列具有队列的所有特性,本质是一个堆实现的,和队列基本操作相同:
top 访问队头元素
empty 队列是否为空
size 返回队列内元素个数
push 插入元素到队尾 (并排序)
emplace 原地构造一个元素并插入队列
pop 弹出队头元素
swap 交换内容
和队列不一样的是,优先队列没有 front() 函数与 back() 函数,而只能通过 top() 函数来访问队首元素(也可以称为堆顶元素),也就是优先级最高的元素。
定义方式有两种
- typename 可以是任意基本数据类型或容器:
priority_queue< typename > name;
- 定义:priority_queue<Type, Container, Functional>
Type 数据类型,Container 容器类型(Container必须是用数组实现的容器,比如vector,deque等等,但不能用 list。STL里面默认用的是vector),Functional 就是比较的方式,当需要用自定义的数据类型时才需要传入这三个参数,使用基本数据类型时,只需要传入数据类型,默认是大顶堆。
注意第二个参数填写的是来承载底层数据结构堆(heap)的容器,如果第一个参数是 double 型或 char 型,则此处只需要填写 vector 或 vector;
而第三个参数 则是对第一个参数的比较类,less 表示数字大的优先级越大,而 greater 表示数字小的优先级越大。也可以自定义数据比较关系
对基本数据类型来说,下面两种优先队列的定义是等价的(以 int 型为例,注意最后两个 > 之间有一个空格):
priority_queue<int> q;
priority_queue<int,vector<int>,less<int>> q;
如果想让优先队列总是把最小的元素放在队首,则需进行如下定义:
priority_queue<int,vector<int>,greater<int>>q;
如果不是基本类型,那么结构体的优先级设置方法有所区别需要重载小于号"<" 例如
struct student
{string name;int age;friend bool operator <(student s1,student s2){return student.age <student.age;}
};
重载大于号会编译错误,因为从数学上来说只需要重载小于号,即 f1 > f2 等价于判断 f2 < f1,而 f1 == f2 则等价于判断!(f1<f2) &&!(f2<fl))
如果想把重载写在变量结构体外面则需要重载小括号()同时将其用struct包装起来,例如
struct ListNode {int val;ListNode *next;ListNode() : val(0), next(nullptr) {}ListNode(int x) : val(x), next(nullptr) {}ListNode(int x, ListNode *next) : val(x), next(next) {}
}
struct comp{bool operator() (ListNode *L1,ListNode *L2){return L1->val > L2->val;}
};
priority_queue<ListNode*,vector<ListNode*>,comp> q;
相关文章:
【C++】priority_queue优先队列
头文件#include <queue> 优先队列具有队列的所有特性,本质是一个堆实现的,和队列基本操作相同: top 访问队头元素 empty 队列是否为空 size 返回队列内元素个数 push 插入元素到队尾 (并排序) emplace 原地构造一个元素并插入队列 pop 弹出队头元素…...
蓝桥杯---三国游戏
问题描述 小蓝正在玩一款游戏。游戏中魏蜀吴三个国家各自拥有一定数量的士兵 X, Y, Z (一开始可以认为都为 0 )。游戏有 n 个可能会发生的事件,每个事件之 间相互独立且最多只会发生一次,当第 i 个事件发生时会分别让 X, Y, Z 增加 Ai , Bi ,Ci 。…...
设计一个分布式ID
为了保证全局唯一性可以用时间作为区分点一部分,时间尽可能细化,可以精确到毫秒,甚至是微秒和纳秒。如果是分布式系统有多态机器,可以根据机器ID再进行以下区分。如哦机器运行的特别快,1毫秒有大量ID生成,可…...
259:vue+openlayers: 显示海量多边形数据,10ms加载完成
第259个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+openlayers项目中通过WebGLVectorLayerRenderer方式加载海量多边形数据。这里相当于将海量的数据放在同一个层的source中,然后通过webglTile的方式渲染出这一层。 本示例数据为5000个多边形,加载速度超级快。 直接…...
Go Zero微服务个人探究之路(十)实战走通微服务前台请求调用的一套流程model->rpc微服务->apiHTTP调用
前言 Go语言凭借低占用,高并发等优秀特性成为后台编程语言的新星,GoZero框架由七牛云技术副总裁团队编写,目前已经成为Go微服务框架里star数量最多的框架 本文记录讲述笔者一步步走通前台向后台发出请求,后台api调用rpc服务的相…...
K8s 安装部署-Master和Minion(Node)
K8s 安装部署-Master和Minion(Node) 操作系统版本:CentOS 7.4 Master :172.20.26.167 Minion-1:172.20.26.198 Minion-2:172.20.26.210(后增加节点) ETCD:172.20.27.218 先安装部署ETCD y…...
从零学习Linux操作系统 第二十部分 mariadb数据库的管理
一、对于数据库的基本介绍 1.什么是数据库 数据库就是个高级的表格软件 2.常见数据库 Mysql Oracle mongodb db2 sqlite sqlserver … 3.Mysql (SUN -----> Oracle) 4.mariadb (Mysql的一种) 数据库中的常用名词 1.字段 :表格中的表头 2.表 &…...
数据脱敏和数据加密有什么区别
数据脱敏:主要是为了兼顾数据安全与数据使用,采用专业的数据脱敏算法。 数据加密:通过对数据进行编码来保护数据,获取实际值的唯一方法是使用解密密钥解码数据。 数据加密是可逆的,数据脱敏是不可逆的。 处理方法不同 保护内容…...
主流排序算法
冒泡排序(Bubble Sort): 基本思想:通过比较相邻元素的大小,不断交换相邻元素的位置,使得较大的元素逐渐“浮”到数组的最后。时间复杂度:O(n^2)。 选择排序(Selection Sort…...
MySql的使用方法
一.什么是MySql MySql是一种数据库管理系统,是用来存储数据的,可以有效的管理数据,数据库的存储介质为硬盘和内存。 和文件相比,它具有以下优点: 文件存储数据是不安全的,且不方便数据的查找和管理…...
C#,数据检索算法之三元搜索(Ternary Search)的源代码
数据检索算法是指从数据集合(数组、表、哈希表等)中检索指定的数据项。 数据检索算法是所有算法的基础算法之一。 本文发布 三元搜索(Ternary Search)的源代码。 1 文本格式 using System; namespace Legalsoft.Truffer.Algo…...
windbg:常用指令
windbg 调试 参考文档 1、viewing-and-editing-global-variables-in-windbg WinDBG 常用调试命令 加载符号 .sympath // 查看当前符号查找路径 .sympath c:\symbols // 将符号查找路径设为:c:\symbols .sympath c:\symbols // 将c:\symbols添加…...
23. 集合类
集合 1. 概述2. 分类2.1 单列集合(Collection)2.2 双列集合(Map) 单列集合 Collection、List、Set、ArrayList、LinkedList’、Vector、HashSet、TreeSet、LinkedHashSet双列集合 Map、HashTable、HashMap、TreeMap、Properties、…...
OpenAI平台:引领人工智能的创新与应用
在当今迅速发展的技术世界中,OpenAI已成为人工智能(AI)研究和应用的先驱。作为一个致力于确保人工智能的安全和广泛受益的组织,OpenAI通过其平台提供了一系列强大的工具和API,这些工具和API正在重塑我们与技术的互动方…...
redis原理(五)Lua语言
一、介绍: 1、背景: 在 Redis 的 2.6 以上版本中,除了可以使用命令外,还可以使用 Lua 语言操作 Redis。 Redis 命令的计算能力并不算很强大,而使用 Lua 语言则在很大程度上弥补了 Redis 的这个不足。 2、特点&#…...
SOHO外贸怎么建网站?做海洋建站的步骤?
SOHO外贸如何做跨境独立站?搭建外贸自建站的策略? 一位成功的SOHO外贸从业者不仅需要精湛的贸易技能,还需要一个优质的网站来展示产品、与客户互动,并建立强大的在线品牌形象。海洋建站将探讨在SOHO外贸领域如何建立一个成功的网…...
[论文阅读] |RAG评估_Retrieval-Augmented Generation Benchmark
写在前面 检索增强能够有效缓解大模型存在幻觉和知识时效性不足的问题,RAG通常包括文本切分、向量化入库、检索召回和答案生成等基本步骤。近期组里正在探索如何对RAG完整链路进行评估,辅助阶段性优化工作。上周先对评估综述进行了初步的扫描࿰…...
【Linux】动态库和静态库——动态库和静态库的打包和使用、gcc编译、拷贝到系统默认的路径、建立软连接
文章目录 动态库和静态库1.静态库和动态库的介绍2.静态库的打包和使用2.1生成静态库2.2使用静态库的三种方式2.2.1gcc编译2.2.2拷贝到系统默认的路径2.2.3建立软连接 3.动态库的打包和使用3.1生成动态库3.2使用动态库3.3解决加载不到动态库的方法 动态库和静态库 1.静态库和动…...
【Redis】Redis有哪些适合的场景
🍎个人博客:个人主页 🏆个人专栏:Redis ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 (1)会话缓存(Session Cache) (2)全页缓存(FPC…...
uniapp上传音频文件到服务器
视频教程地址: 【uniapp录音上传组件,将录音上传到django服务器】 https://www.bilibili.com/video/BV1wi4y1p7FL/?share_sourcecopy_web&vd_sourcee66c0e33402a09ca7ae1f0ed3d5ecf7c uniapp 录制音频文件上传到django服务器保存到服务器 …...
Vivo Xplay6专用降级刷机工具AFTool|支持1.15.1/1.16.6/1.16.14等多版本线刷|含教程+驱动+工具包
温馨提示:文末有联系方式【适用机型精准说明】 本工具包专为Vivo Xplay6(型号V317A/V317K)深度适配,非Xplay6机型(含其他Vivo手机)请勿购买——不同机型Bootloader锁机制与分区结构差异极大,强行…...
告别动物实验?AI设计抗体成功率低怎么办?聊聊RFdiffusion的局限与未来优化方向
AI抗体设计的突破与挑战:从RFdiffusion看技术瓶颈与未来路径 当David Baker团队在bioRxiv上发布利用RFdiffusion实现抗体原子级精度从头设计的论文时,整个AI制药领域为之振奋。这项技术突破意味着,我们可能正站在抗体药物研发范式转变的临界点…...
通义千问3-Reranker-0.6B效果展示:新闻标题-正文段落时效性重排案例
通义千问3-Reranker-0.6B效果展示:新闻标题-正文段落时效性重排案例 1. 引言:重排序技术的重要性 在信息爆炸的时代,我们每天都会接触到海量的新闻资讯。但你是否遇到过这样的情况:搜索一个热点事件,结果却出现大量过…...
Arrow终极指南:5步掌握可视化游戏叙事设计工具
Arrow终极指南:5步掌握可视化游戏叙事设计工具 【免费下载链接】Arrow Game Narrative Design Tool 项目地址: https://gitcode.com/gh_mirrors/arrow/Arrow Arrow是一款免费开源的游戏叙事设计工具,专门用于创建互动非线性故事和文本冒险游戏。这…...
Agent-S实战指南:突破性智能体框架如何实现72.6%人类级计算机交互性能
Agent-S实战指南:突破性智能体框架如何实现72.6%人类级计算机交互性能 【免费下载链接】Agent-S Agent S: an open agentic framework that uses computers like a human 项目地址: https://gitcode.com/GitHub_Trending/ag/Agent-S 在人工智能与计算机交互的…...
PaddleOCR Docker镜像实战:从Java调用到表格识别,一个容器搞定OCR全流程
PaddleOCR Docker镜像实战:从Java调用到表格识别全流程指南 在数字化转型浪潮中,OCR(光学字符识别)技术已成为企业处理纸质文档、票据和表格数据的关键工具。PaddleOCR作为百度开源的OCR解决方案,凭借其出色的中文识别…...
HARMONYOS应用实例242:不等式组解集图示
不等式组解集图示 功能:输入两个不等式,自动在数轴上绘制两个解集,并高亮显示其公共部分。这是一个基于 HarmonyOS ArkTS 开发的交互式不等式求解工具,用户可以输入两个不等式(如 x > 2 和 x < 5),系统会自动解析并在数轴上绘制两个解集,同时高亮显示它们的公共部…...
拆解 OpenHands(11)--- Runtime主要组件
本篇继续对 runtime 的解读,主要介绍 插件、执行系统和环境这三个组件。因为本系列借鉴的文章过多,可能在参考文献中有遗漏的文章,如果有,还请大家指出。0x01 三大组件本篇要介绍的几个组件如下:ActionExecutor&#x…...
Leather Dress Collection镜像免配置:预装SD1.5+12LoRA+app.py开箱即用
Leather Dress Collection镜像免配置:预装SD1.512LoRAapp.py开箱即用 想快速生成各种酷炫的皮革服装设计图,但被繁琐的模型下载、环境配置和参数调试劝退?今天介绍的Leather Dress Collection镜像,就是为你准备的“开箱即用”解决…...
Nacos 2.2.0连接达梦数据库踩坑实录:从驱动版本到SQL脚本的完整避坑指南
Nacos 2.2.0与达梦数据库深度适配实战:从驱动选型到容器化部署的全链路解析 当微服务架构遇上国产数据库,技术适配的每个环节都可能成为关键战场。最近在将Nacos 2.2.0与达梦数据库进行生产级适配时,我经历了从驱动版本冲突到SQL脚本优化的完…...
