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

栈、队列和优先队列的使用

1.栈的使用:


2.队列的使用:


3.优先队列的使用:叫队列,底层实现其实是大根堆;另外push 和 emplace 的区别为前者是对已有对象插入,后者可原地构造后插入。


4.容器适配器:可以理解为对底层数据结构进行封装,提供给客户需要的接口。

STL标准库中的stack 和 queue的底层结构默认都为deque。deque 是双端队列,是一种双开口的“连续”空间的数据结构,可以在头尾两端进行插入和删除操作,时间复杂度为O(1),与 vector 比头插和删除效率高,不需要移动元素,扩容时,也无需移动元素效率高;与 list 相比,空间利用率高,不需要存储额外字段。deque 的缺陷是不适合遍历,因为在遍历时,deque 的迭代器要频繁检测其是否移动到某段小空间边界,导致效率低。

deque 并不连续的空间,而是由一段段连续的小空间拼接而成,类似一个二维数组。


5.仿函数:也叫函数对象,行为像函数的类对象,核心是类中重载函数调用运算符。仿函数对象可以保存状态,可以根据对象数据的不同,产生不同的行为

#include<iostream> class Add { public: int operator()(int x, int y)const { return x + y; } }; //使用时先创建对象,然后像调用函数一样调用他 int main() { Add add; int ret = add(10, 20);//add.operator()(10, 20); std::cout << ret << std::endl; }
class mycomparison { bool reverse; public: mycomparison(bool revparam = false) : reverse(revparam) {} bool operator()(const int& lhs, const int& rhs) const { if (reverse) return lhs > rhs; else return lhs < rhs; } }; int main() { mycomparison cmp1; // reverse == false mycomparison cmp2(true); // reverse == true cmp1(10, 20); // 相当于 10 < 20,结果为 true cmp2(10, 20); // 相当于 10 > 20,结果为 false }
http://www.jsqmd.com/news/1217439/

相关文章:

  • C# HashSet<T>核心特性与高效集合操作指南
  • AI资讯简报的工程化实践:从信息筛选到可复现验证
  • AI逻辑推理能力实测:Mensa谜题揭示的约束满足瓶颈
  • 亨得利官方钟表服务中心|全新维修地址和官方电话权威信息声明(2026年7月更新) - 亨得利官方博客
  • C++几何计算实战:从欧几里得距离到三角形周长求解的精度与工程实践
  • 华为HCIE-Datacom数通实验考试通关全记录:备考策略、考场流程、排错实战经验
  • Python核心模块分类与实战应用指南
  • Android下拉刷新与上拉加载实现指南
  • Python零基础入门:从环境搭建到Hello World
  • 单片机点阵LED控制与74HC595驱动技术详解
  • FPGA数字秒表设计:Verilog实现与硬件优化
  • 2026年企业AI办公工具实测横评:WorkBuddy平替选型指南
  • 08接口双色LED显示屏驱动原理与实现
  • Fast_Livo2 虚拟机数据集复现
  • 多维聚合变形术:从GROUP BY到结构化洞察的四层跃迁
  • 2026 年新发布:普兰比较好的项目计划书建议书需要什么资质生产商哪家强,揭秘!项目计划书落地前,这3项资质你必须搞懂 - 企业信息推荐【官方】
  • ShiMetaPi Pico-G1:百元级黑光全彩AI ISP开发板
  • 搭建应用开发环境
  • Python装饰器原理与应用全解析
  • WebSocket技术详解:实时通信协议原理与实战应用
  • MCP:为什么 AI 世界需要统一的工具协议?
  • 技术深耕落地,赋能展会效能升级——GEO高级优化师、落地工程师罗长才专访
  • Elasticsearch 倒排索引中词条索引原理分析 — 基于 Lucene FST
  • 线性回归数学原理:从最小二乘到生产落地的完整推导
  • C语言控制台贪吃蛇:从数据结构到游戏循环的完整实现
  • MCP 初始化过程
  • C/C++缓冲区的概念及应用
  • Ubuntu 22.04安装NVIDIA驱动与CUDA全攻略
  • #大学生毕业设计
  • Java Handler设计模式解析与实战应用