C++中的栈(Stack)
栈是一种后进先出(LIFO)的数据结构,C++标准库提供了std::stack容器适配器,基于其他容器(如std::deque或std::list)实现。
常用操作
-
声明栈
#include <stack> std::stack<int> s; // 默认基于deque -
压栈(push)
将元素添加到栈顶:s.push(10); -
弹栈(pop)
移除栈顶元素(无返回值):s.pop(); -
访问栈顶(top)
获取栈顶元素但不移除:int top = s.top(); -
判空(empty)
检查栈是否为空:if (s.empty()) { /* ... */ } -
获取大小(size)
返回栈中元素数量:size_t count = s.size();
C++中的队列(Queue)
队列是一种先进先出(FIFO)的数据结构,C++标准库提供了std::queue容器适配器,通常基于std::deque或std::list实现。
常用操作
-
声明队列
#include <queue> std::queue<int> q; // 默认基于deque -
入队(push)
将元素添加到队尾:q.push(20); -
出队(pop)
移除队首元素(无返回值):q.pop(); -
访问队首(front)
获取队首元素但不移除:int front = q.front(); -
访问队尾(back)
获取队尾元素但不移除:int back = q.back(); -
判空(empty)
检查队列是否为空:if (q.empty()) { /* ... */ } -
获取大小(size)
返回队列中元素数量:size_t count = q.size();
性能与实现细节
-
栈和队列的底层容器
默认使用std::deque,但可以指定其他容器(如std::list):std::stack<int, std::list<int>> custom_stack; std::queue<int, std::list<int>> custom_queue; -
时间复杂度
- 压栈/弹栈、入队/出队:$O(1)$
- 访问栈顶/队首/队尾:$O(1)$
-
应用场景
- 栈:函数调用栈、括号匹配、表达式求值。
- 队列:任务调度、BFS算法、消息缓冲。

被折叠的 条评论
为什么被折叠?



