值得一看
广告
彩虹云商城
广告

热门广告位

c++中queue和stack的用法_c++队列queue与栈stack容器用法

queue遵循FIFO,用于BFS等场景;stack遵循LIFO,适用于DFS等回溯操作;二者均支持自定义底层容器,常用操作包括push、pop、top/front、empty和size。

c++中queue和stack的用法_c++队列queue与栈stack容器用法

在C++中,queue(队列)和stack(栈)是两种常用的容器适配器,它们基于其他标准容器(如deque、list、vector)实现,提供特定的数据访问方式。queue遵循“先进先出”(FIFO),stack遵循“后进先出”(LIFO)。下面详细介绍它们的基本用法和常见操作。

queue 队列的基本用法

queue位于#include <queue>头文件中,通常使用deque作为底层容器。

常用操作包括:

  • push(element):在队尾插入元素
  • pop():删除队首元素(不返回值)
  • front():获取队首元素的引用
  • back():获取队尾元素的引用
  • empty():判断队列是否为空
  • size():返回队列中元素个数

示例代码:

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

小微助手

小微助手

微信推出的一款专注于提升桌面效率的助手型AI工具

小微助手52

查看详情
小微助手

#include <iostream>
#include <queue>
using namespace std;
int main() {
queue<int> q;
q.push(10);
q.push(20);
q.push(30);
while (!q.empty()) {
cout << q.front() << " ";
q.pop();
}
// 输出:10 20 30
return 0;
}

stack 栈的基本用法

stack也定义在#include <stack>中,默认底层容器为deque。

常用操作有:

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

示例代码:

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

小微助手

小微助手

微信推出的一款专注于提升桌面效率的助手型AI工具

小微助手52

查看详情
小微助手

#include <iostream>
#include <stack>
using namespace std;
int main() {
stack<int> s;
s.push(1);
s.push(2);
s.push(3);
while (!s.empty()) {
cout << s.top() << " ";
s.pop();
}
// 输出:3 2 1
return 0;
}

自定义底层容器

queue和stack都允许指定底层容器类型。例如,可以用list或vector来实现。

例如使用vector实现stack:

stack<int, vector<int>> stk;

queue也可以指定底层容器,但注意不能使用vector,因为queue需要前后都能操作的容器,而vector不支持高效地在前端删除。

queue<int, list<int>> q_list;

常见应用场景

queue常用于广度优先搜索(BFS)、任务调度、缓冲处理等需要按顺序处理的场景。

stack适用于表达式求值、括号匹配、函数调用模拟、深度优先搜索(DFS)等需要回溯的场合。

掌握这两个容器的特性,能有效提升算法实现的清晰度和效率。

基本上就这些,用起来不复杂但容易忽略细节,比如pop不返回值,取元素前要确保非空。

相关标签:

前端 栈 ai c++ ios 数据访问 include 栈 算法

大家都在看:

C++ AR云渲染环境 WebGPU后端开发配置
C++结构体大小端 字节序敏感数据处理
C++中前置++i和后置i++运算符的根本区别是什么
C++程序如何获取当前的工作目录路径
如何在C++的联合体中判断当前存储的是哪种类型的数据
温馨提示: 本文最后更新于2025-09-23 16:29:51,某些文章具有时效性,若有错误或已失效,请在下方留言或联系在线客服
文章版权声明 1 本网站名称: 创客网
2 本站永久网址:https://new.ie310.com
1 本文采用非商业性使用-相同方式共享 4.0 国际许可协议[CC BY-NC-SA]进行授权
2 本站所有内容仅供参考,分享出来是为了可以给大家提供新的思路。
3 互联网转载资源会有一些其他联系方式,请大家不要盲目相信,被骗本站概不负责!
4 本网站只做项目揭秘,无法一对一教学指导,每篇文章内都含项目全套的教程讲解,请仔细阅读。
5 本站分享的所有平台仅供展示,本站不对平台真实性负责,站长建议大家自己根据项目关键词自己选择平台。
6 因为文章发布时间和您阅读文章时间存在时间差,所以有些项目红利期可能已经过了,能不能赚钱需要自己判断。
7 本网站仅做资源分享,不做任何收益保障,创业公司上收费几百上千的项目我免费分享出来的,希望大家可以认真学习。
8 本站所有资料均来自互联网公开分享,并不代表本站立场,如不慎侵犯到您的版权利益,请联系79283999@qq.com删除。

本站资料仅供学习交流使用请勿商业运营,严禁从事违法,侵权等任何非法活动,否则后果自负!
THE END
喜欢就支持一下吧
点赞14赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容