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

STL详解——stack与queue的介绍与使用

目录

stack

stack的介绍

stack的定义

stack的使用

queue

queue的介绍

queue的定义

queue的使用


stack

stack的介绍

stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其只能从容器的一端进行元素的插入与提取操作。

stack的定义

第一种方法 使用默认的适配器定义栈:

stack<int> st1;

第二种 使用特定的适配器定义栈:

stack<int, vector<int>> st2; stack<int, list<int>> st3;

注意: 如果没有为stack指定特定的底层容器,默认情况下使用deque。

stack的使用

stack当中常用的成员函数如下:

成员函数功能
empty判断栈是否为空
size获取栈中有效元素个数
top获取栈顶元素
push元素入栈
pop元素出栈
swap交换两个栈中的数据

代码示例:

stack<int> s1; s1.push(1); s1.push(2); s1.push(3); s1.push(4); s1.push(5); s1.push(6); cout << s1.size() << endl; cout << s1.top() << endl; s1.pop(); cout << s1.top() << endl; while (!s1.empty()) { cout << s1.top() << ' '; s1.pop(); } cout << endl;

queue

queue的介绍

队列是一种容器适配器,专门用在具有先进先出操作的上下文环境中,其只能从容器的一端插入元素,另一端提取元素。

queue的定义

第一种方法 使用默认的适配器定义队列

queue<int> q1;

第二种方法 使用特定的适配器定义队列

queue<int, vector<int>> q2; queue<int, list<int>> q3;

注意: 如果没有为queue指定特定的底层容器,默认情况下使用deque。

queue的使用


queue当中常用的成员函数如下:

成员函数功能
empty判断队列是否为空
size获取队列中有效元素个数
front获取队头元素
back获取队尾元素
push队尾入队列
pop队头出队列
swap交换两个队列中的数据
#include <iostream> #include <list> #include <queue> using namespace std; int main() { queue<int, list<int>> q; q.push(1); q.push(2); q.push(3); q.push(4); cout << q.size() << endl; //4 while (!q.empty()) { cout << q.front() << " "; q.pop(); } cout << endl; //1 2 3 4 return 0; }

我们额外讲讲适配器,就是指定底层具体使用哪种数据结构来实现这个stack和queue,一般就默认的就行了,因为stack以及queue都只是容器适配器,存储模式需要我们指定结构来实现。

http://www.zskr.cn/news/1387972.html

相关文章:

  • 告别轮询!用STM32CubeMX+HAL库玩转USART中断收发(附LED控制实战代码)
  • android kotlin Flow:distinctUntilChangedBy + stateIn 的坑
  • 一线观察发现:宝宝湿疹辅助改善的几个细节
  • 初次在Taotoken模型广场选型并成功调用新上线模型的步骤
  • 零基础做GEO 关键词覆盖?这份保姆级教程让你秒懂
  • PowerSetting极速下载优化方案全解析
  • 2025-2026年天津国际学校推荐:五大高性价比选择评测课程衔接案例市场份额 - 品牌推荐
  • 苏宁开放平台商品详情接口实战:多维度数据获取与结构化处理(附核心代码 + 避坑指南)
  • HAMi 源码阅读笔记 09:/bind 路由入口如何接收 kube-scheduler 的绑定请求
  • 对比测试:Claude Sonnet 4.6 vs GPT-5.5 vs DeepSeek V4
  • 微信小游戏19MB主包体积控制实战指南
  • Python TDD实战入门:从red-green-refactor到高覆盖率测试套件
  • 线程任务执行报错后,线程会不会挂掉,Java线程池
  • Unity微信小游戏实战:突破首包限制与WXSS兼容性难题
  • CAS:基于Go的AI终端工作台,重构人机协同工作流
  • AI编程协作:从语法记忆到意图表达的开发模式变革
  • 大模型安全全景解析——从DeepSeek看AI伦理与未来挑战
  • ROS1 Action通信从入门到放弃?不,是到精通!详解actionlib库与自定义消息实战
  • AI Agent记忆系统构建指南:从向量数据库到智能检索的完整实现
  • D2DX:如何让20年前的《暗黑破坏神2》在现代4K显示器上完美运行?
  • Codex CLI:终端里的代码生成瑞士军刀
  • 第4篇:数据博弈——税务大数据如何“看见”你的企业
  • 如何通过BIOS设置榨干硬件性能
  • Python海象运算符:=详解:赋值表达式原理与工程实践
  • 基于MCP协议为Claude构建无密钥实时数据访问架构
  • 构建AI技能CLI工具:mfkvault-cli的设计与实现
  • 金融企业如何搭建处理复杂合规流程的AI Agent?基于TARS大模型与实在Agent的生产力实践
  • Spring Boot 里怎么统计接口参数和耗时并打印日志
  • VR射击游戏开发:从坐标系同步到工业级框架实战
  • taotoken为内容创作团队提供的高效ai写作工作流