0

0

C++ queue和stack怎么用_C++队列与栈容器操作详解

下次还敢

下次还敢

发布时间:2025-12-03 12:32:02

|

605人浏览过

|

来源于php中文网

原创

C++中queue和stack是STL容器适配器,queue基于deque实现FIFO,支持push、pop、front、back、size、empty操作;stack默认用vector实现LIFO,提供push、pop、top、size、empty接口;二者均不支持遍历,使用前需确保非空以避免未定义行为。

c++ queue和stack怎么用_c++队列与栈容器操作详解

C++ 中的 queuestack 是标准模板库(STL)提供的容器适配器,分别用于实现队列和的数据结构。它们底层可以基于其他容器(如 deque、list、vector)实现,使用时需包含对应的头文件,并掌握基本操作方法。

包含头文件与定义方式

使用 queue 和 stack 前需要引入对应头文件:

queue 对应头文件是
stack 对应头文件是

定义语法如下:

std::queue q; // 创建一个整型队列
std::stack s; // 创建一个双精度浮点型栈

默认情况下,queue 使用 deque 作为底层容器,stack 使用 vector。也可以指定底层容器类型,例如:

立即学习C++免费学习笔记(深入)”;

std::queue> q_list; // 使用 list 实现队列
std::stack> s_vec; // 使用 vector 实现栈

queue 队列的基本操作

queue 遵循“先进先出”(FIFO)原则,只允许在队尾入队,在队首出队。

  • q.push(value):将元素插入队尾
  • q.pop():移除队首元素(不返回值)
  • q.front():获取队首元素的引用
  • q.back():获取队尾元素的引用
  • q.empty():判断队列是否为空,返回 bool
  • q.size():返回队列中元素个数

示例代码:

花生AI
花生AI

B站推出的AI视频创作工具

下载
std::queue q;
q.push(10);
q.push(20);
std::cout
q.pop();
std::cout

stack 栈的基本操作

stack 遵循“后进先出”(LIFO)原则,所有操作都在栈顶进行。

  • s.push(value):将元素压入栈顶
  • s.pop():弹出栈顶元素(不返回值)
  • s.top():获取栈顶元素的引用
  • s.empty():判断栈是否为空
  • s.size():返回栈中元素数量

示例代码:

std::stack s;
s.push(100);
s.push(200);
std::cout
s.pop();
std::cout

常见使用场景与注意事项

queue 常用于广度优先搜索(BFS)、任务调度等需要顺序处理的场景;stack 适用于表达式求值、括号匹配、函数调用模拟等问题。

注意点:

  • 调用 front、back 或 top 前必须确保容器非空,否则行为未定义
  • pop 操作不返回值,如需获取并删除元素,应先调用 top/front 再调用 pop
  • queue 不支持遍历,stack 同样无法直接访问非栈顶元素
  • 若需要遍历或随机访问,应考虑使用 vector 或 deque 替代

基本上就这些。掌握好 push、pop、top/front、empty 和 size 这几个核心接口,就能熟练使用 C++ 中的 queue 和 stack。实际编程中根据数据访问需求选择合适结构即可。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

318

2023.08.02

int占多少字节
int占多少字节

int占4个字节,意味着一个int变量可以存储范围在-2,147,483,648到2,147,483,647之间的整数值,在某些情况下也可能是2个字节或8个字节,int是一种常用的数据类型,用于表示整数,需要根据具体情况选择合适的数据类型,以确保程序的正确性和性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

538

2024.08.29

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

52

2025.08.29

C++中int的含义
C++中int的含义

本专题整合了C++中int相关内容,阅读专题下面的文章了解更多详细内容。

197

2025.08.29

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

52

2025.08.29

C++中int、float和double的区别
C++中int、float和double的区别

本专题整合了c++中int和double的区别,阅读专题下面的文章了解更多详细内容。

99

2025.10.23

treenode的用法
treenode的用法

​在计算机编程领域,TreeNode是一种常见的数据结构,通常用于构建树形结构。在不同的编程语言中,TreeNode可能有不同的实现方式和用法,通常用于表示树的节点信息。更多关于treenode相关问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

535

2023.12.01

C++ 高效算法与数据结构
C++ 高效算法与数据结构

本专题讲解 C++ 中常用算法与数据结构的实现与优化,涵盖排序算法(快速排序、归并排序)、查找算法、图算法、动态规划、贪心算法等,并结合实际案例分析如何选择最优算法来提高程序效率。通过深入理解数据结构(链表、树、堆、哈希表等),帮助开发者提升 在复杂应用中的算法设计与性能优化能力。

17

2025.12.22

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

72

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1.0万人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号