栈stack的用法
stack 是什么?
stack 是 栈,一种 后进先出(LIFO) 的数据结构。
类比:一摞盘子
- 只能从 顶部 放
- 只能从 顶部 取
需要的头文件
1 |
通常还会配合:
1 |
|
定义一个栈
1 | stack<int> st; // 存 int |
stack<T> 中的 T 可以是任意类型。
常用成员函数(核心)
| 函数 | 作用 |
|---|---|
st.push(x) |
入栈 |
st.pop() |
出栈(不返回值) |
st.top() |
访问栈顶元素 |
st.empty() |
是否为空 |
st.size() |
元素个数 |
注意:
pop()不会返回元素- 取元素用
top()
基本示例
1 |
|
输出:
1 | 3 |
遍历 stack(常见坑)
stack 不能直接遍历(没有迭代器)
✅ 正确方式:边弹边访问
1 | while (!st.empty()) { |
这会 清空栈
安全使用(必须判断)
错误写法(可能崩溃):
1 | cout << st.top(); // 如果栈为空 |
正确写法:
1 | if (!st.empty()) { |
stack 的底层实现(了解)
1 | stack<int> st; |
默认底层是:
1 | deque<int> |
你也可以指定:
1 | stack<int, vector<int>> st; |
但 99% 不需要关心
常见应用场景(非常重要)
1. 括号匹配
1 | stack<char> st; |
2. 单调栈(竞赛必考)
1 | stack<int> st; |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 zhaijiang的小窝!

