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

C++ 优先队列(priority_queue)深度解析

C++ 优先队列(priority_queue)深度解析

1. 什么是优先队列?

优先队列(Priority Queue) 是一种特殊的队列,它不遵循严格的先进先出(FIFO)原则,而是按照元素的优先级来出队。

生活中的比喻:

  • 普通队列:像排队买票,先来先服务
  • 优先队列:像医院急诊,病情严重的病人先得到治疗

2. 基本语法和定义

#include <queue>
#include <iostream>
using namespace std;// 基本定义方式
priority_queue<int> pq1;                    // 默认大顶堆
priority_queue<int, vector<int>, greater<int>> pq2; // 小顶堆

3. 三种常用的优先队列

3.1 大顶堆(默认)

#include <iostream>
#include <queue>
using namespace std;int main() {// 默认大顶堆:最大的元素在队首priority_queue<int> maxHeap;maxHeap.push(3);maxHeap.push(1);maxHeap.push(4);maxHeap.push(2);cout << "大顶堆元素出队顺序:";while (!maxHeap.empty()) {cout << maxHeap.top() << " ";  // 输出:4 3 2 1maxHeap.pop();}cout << endl;return 0;
}

3.2 小顶堆

#include <iostream>
#include <queue>
#include <vector>
#include <functional>  // 需要包含这个头文件
using namespace std;int main() {// 小顶堆:最小的元素在队首priority_queue<int, vector<int>, greater<int>> minHeap;minHeap.push(3);minHeap.push(1);minHeap.push(4);minHeap.push(2);cout << "小顶堆元素出队顺序:";while (!minHeap.empty()) {cout << minHeap.top() << " ";  // 输出:1 2 3 4minHeap.pop();}cout << endl;return 0;
}

3.3 自定义优先级

#include <iostream>
#include <queue>
#include <vector>
using namespace std;// 自定义比较函数:按值的绝对值大小排序
struct AbsCompare {bool operator()(int a, int b) {return abs(a) < abs(
http://www.dtcms.com/a/446509.html

相关文章:

  • php 8.4.4 更新日志
  • 自己搭建网站做网上商城做系统网站赚钱
  • 【征文计划】基于Rokid CXR-M SDK 打造AI 实时会议助手:从连接到自定义界面的完整实践
  • 多模态推理的“思维之跃”:紫东太初4.0如何重塑AI认知边界
  • 实现 RTOS 操作系统 【零】内核编程实践
  • 做产品推广哪个网站好欧米茄表官网
  • 带后台的免费网站模板网站建设培训班上的讲话
  • 【学习笔记】泊松表面重建探讨
  • 做彩票网站需要学习什么深圳招工包吃住8000元
  • 株洲网站建设 磐石网络中国环球贸易网
  • 如何买域名发布网站电子商务网站建设类论文
  • 6. linux shell命令(2)基本系统维护命令与用户管理
  • 我的智能清洁日记:一台有鹿机器人的社区见闻录
  • 建英文网站费用找外包开发一个小程序需要多少钱
  • C++中的装饰器模式变体
  • 【代码随想录day 35】 力扣 416. 分割等和子集
  • 网站的关键字 设置php 网站后台管理系统
  • 沈阳手机端建站模板大数据适合什么人学
  • C语言-字符函数和字符串函数
  • 济南制作网站制作公司策划wordpress自动加载链接
  • 网站怎么设置标题国外企业网址
  • page指令元素
  • Postgresql源码(149)SIMD应用与性能测试
  • 知名网站建设加盟合作wordpress 腾讯视频插件下载
  • 重庆知名网站建设公司怎么去推广自己的网站
  • 深入 Pytest:用 Fixture 解锁高效 Python 测试之道
  • 一般做个网站需要多少钱建立网站需要做什么
  • Linux内核进程管理子系统有什么第六十二回 —— 进程主结构详解(58)
  • 博客系统-性能测试报告
  • 英文网站建设技术怎么建立博客网站