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

在C++中,queue(队列)和stack(栈)是两种常用的容器适配器,它们基于其他标准容器(如deque、list、vector)实现,提供特定的数据访问方式。queue遵循“先进先出”(FIFO),stack遵循“后进先出”(LIFO)。下面详细介绍它们的基本用法和常见操作。
queue位于#include <queue>头文件中,通常使用deque作为底层容器。
常用操作包括:
示例代码:
立即学习“C++免费学习笔记(深入)”;
#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也定义在#include <stack>中,默认底层容器为deque。
常用操作有:
示例代码:
立即学习“C++免费学习笔记(深入)”;
#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不返回值,取元素前要确保非空。
以上就是c++++中queue和stack的用法_c++队列queue与栈stack容器用法的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号