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

C++(初阶)(十二)——stack和queue

十二,stack和queue

  • 十二,stack和queue
    • Stack
    • Queue
      • priority_queue
    • 简单使用
    • 模拟实现
    • deque

Stack

函数说明
stack()构造空栈
empty()判断栈是否为空
size()返回栈的有效元素个数
top()返会栈顶元素的引用
push()将所给元素val压入栈中
pop()将栈的尾部元素弹出

Queue

函数说明
queue()构造的队列
empty()判空
size()返回队列有效元素个数
front()返回队头元素的引用
back()返回队尾元素的引用
push()在队尾将元素val入队
pop()队头元素出队

priority_queue

函数说明
priority_queue();/,priority_queue(first,last);构造空的优先级队列
empty();判断优先级队列是否为空,是返回true,否 则返回false
top();返回优先级队列中最大(最小元素),即堆顶元素
push(x);在优先级队列中插入元素x
pop();删除优先级队列中最大(最小)元素,即堆顶元素

1,优先队列是一种容器适配器,默认排序是降序,它的第一个元素总是它所包含的元素中最大的。

2,底层结构类似堆,可以随时插入元素,可以取堆顶元素,默认是最大的元素。

3,优先队列被实现为容器适配器,容器适配器即将特定容器类封装作为其底层容器类,queue 提供一组特定的成员函数来访问其元素。元素从特定容器的“尾部”弹出,其称为优先队列的顶部。

4,底层容器可以是任何标准容器类模板,也可以是其他特定设计的容器类。

默认使用vector作为其底层存储数据的容器。

容器应该可以通过 随机访问迭代器访问,并支持以下操作:

函数说明
empty():检测容器是否为空
size():返回容器中有效元素个数
front():返回容器中第一个元素的引用
push_back():在容器尾部插入元素
pop_back():删除容器尾部元素

5,默认情况下priority_queue是大堆。

简单使用

stack_queue_4_18

模拟实现

stack_queue_4_16

deque

优点:1,头尾插入删除,效率很高

2,下标随机访问效率也还可以,但是比vector的效率低。

缺点:1,中间的插入删除需要全部挪动,效率很低。

(不可以对单个buff扩容,因为会影响+=操作的访问)

2,对比vector,list没有极致的优点

http://www.xdnf.cn/news/82765.html

相关文章:

  • Web网页核心技术解析:从结构到节点操作
  • 大模型学习笔记------Llama 3模型架构之分组查询注意力(GQA)
  • [Git] Git Stash 命令详解
  • 【MATLAB第115期】基于MATLAB的多元时间序列的ARIMAX的预测模型
  • 线缆屏蔽与浪涌测试
  • Linux中查询进程服务,通过端口方式关闭
  • C++模板学习(进阶)
  • PH热榜 | 2025-04-22
  • 客户端本地搭建
  • Baidu Comate初体验:强大的全局ai工具
  • 嘻游后台系统与机器人模块结构详解:功能逻辑 + 定制改造实战
  • 性能比拼: Go vs Java
  • mybatis实现增删改查1
  • 三网通电玩城平台系统结构与源码工程详解(二):Node.js 服务端核心逻辑实现
  • 香橙派使用USB摄像头
  • 【锂电池剩余寿命预测】LSTM长短期记忆神经网络锂电池剩余寿命预测(Matlab源码)
  • Trae国内版怎么用?Trae IDE 内置 MCP 市场配置使用指南
  • STM32提高篇: WIFI通讯
  • Unity 脚本使用(二)——UnityEngine.AI——NavMesh
  • vscode使用笔记
  • spdlog日志库使用教程(含踩坑问题解决)
  • 2.6 递归
  • 2025.4.22学习日记 JavaScript的常用事件
  • 多模态大语言模型arxiv论文略读(三十四)
  • QEMU源码全解析 —— 块设备虚拟化(21)
  • go中map和slice非线程安全
  • 不可变数据:基于持久化数据结构的状态管理
  • Seata 分布式事务 快速开始
  • 动态规划算法:完全背包类问题
  • 应用案例|兵器重工:某体系需求视图模型开发