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

C++stl大根堆/小根堆的创建与记忆

priority_queue<int, vector<int>, greater<int>> heap; 

这行代码在 C++ 中声明了一个优先队列 heap,其元素类型为 int,使用 vector<int> 作为其底层容器,并且指定了 greater<int> 作为比较函数对象。

这里的关键是 greater<int> 的使用,它告诉 priority_queue 以相反于默认方式来比较元素。默认情况下,priority_queue 是一个最大堆(大根堆),即堆顶元素是最大的。但是,通过使用 greater<int>,它将变为最小堆(小根堆),即堆顶元素是最小的。

  1. 默认情况:如果你不指定第三个模板参数,默认情况下 priority_queue 是一个最大堆。这是因为默认的比较是 less<int>,它将最大的元素放在堆顶。

  2. 使用 greater:当你使用 greater<int> 作为第三个模板参数时,它改变了元素的比较方式,使得比较结果相反。因此,原本应该是最大的元素现在变成了最小的,堆变成了最小堆。

  3. 记住关键字less 通常意味着“较少”,在默认情况下它创建了一个最大堆。而 greater 意味着“更多”,使用它创建了一个最小堆。

http://www.lryc.cn/news/410945.html

相关文章:

  • visual studio性能探测器使用案列
  • redis的代码开发
  • 嗷呜,就问你接不接?
  • 避免过拟合,参数大模型强,正则让模型不要走偏
  • vue+element-ui的列表查询条件/筛选条件太多以下拉选择方式动态添加条件(支持全选、反选、清空)
  • LLM的训练与推断
  • uniapp使用WebSocket uniapp使用WebSocket Uniapp整合WebSocket uniapp使用 websocket
  • SSH Exporter:基于Prometheus的远程系统性能监控神器
  • Docker基础概念
  • 小白进阶为大神
  • 2024最新Python和PyCharm的安装教程
  • 数据库死锁:深入解析与应对策略
  • Python入门宝藏《看漫画学Python》,495页漫画带你弄清python知识点!简单易懂 | 附PDF全彩版
  • Webshell管理工具:AntSword(中国蚁剑)
  • Java 中的File类
  • java将map转json字符串或者再将json字符串转回map,java将对象转json字符串或者互想转换,对象集合和json字符串互转
  • 数据库管理-第225期 Oracle DB 23.5新特性一览(20240730)
  • 提高生产效率:最佳7大Bug记录工具
  • DDOS攻击学习 - kali初学
  • 【C++】类和对象——流插入和流提取运算符重载
  • Vmware ubuntu20.04 虚拟文件夹
  • 人工智能学习笔记 - 初级篇Ⅱ - 图形可视化 - 第11节: 绘制带填充区域的图表
  • 使用STM32实现一个线性代数计算器
  • 我在高职教STM32——串口通信(4)
  • Redis 缓存中间件 缓存数据库
  • 51、PHP 实现简单的快速排序
  • 如何应对机器视觉软件中时间篡改与许可绕过的挑战?
  • python文件的读写
  • 2024下《网络工程师》案例简答题,刷这些就够了!
  • Astro 实现TodoList网页应用案例