C++ - STL - 栈
栈(Stack)是C++标准模板库(STL)中一个非常重要的容器适配器,它遵循后进先出(LIFO)的原则。无论你是刚接触数据结构的新手,还是需要快速回顾栈用法的开发者,这篇博客都将为你提供全面的指导。
什么是栈?
栈是一种只允许在一端进行插入和删除操作的线性数据结构。想象一下一叠盘子——你只能从最上面取放盘子,这就是栈的工作原理。

栈的入栈和出栈操作


STL的栈
基本操作
使用栈,最常用的就是
- 入栈 push
- 出栈 pop
- 获取栈顶元素 top
- 获取栈的大小 size
- 判断栈是否为空 empty
#include <iostream>
#include <stack>
using namespace std;
int main() {
stack<int> s;
// 入栈操作 - push()
s.push(10);
s.push(20);
s.push(30);
// 查看栈顶元素 - top()
cout << "栈顶元素: " << s.top() << endl; // 输出: 30
// 出栈操作 - pop()
s.pop();
cout << "弹出后栈顶元素: " << s.top() << endl; // 输出: 20
// 检查栈是否为空 - empty()
if (!s.empty()) {
cout << "栈不为空" << endl;
}
// 获取栈的大小 - size()
cout << "栈的大小: " << s.size() << endl; // 输出: 2
return 0;
}
重要提醒:栈不支持直接遍历!如果需要遍历,请考虑其他数据结构。
// 错误的方式:栈不支持迭代器
// for(auto it = s.begin(); it != s.end(); it++) ❌
// 正确的方式:如果需要遍历,先复制内容
void printStack(stack<int> s) { // 传值,不改变原栈
while (!s.empty()) {
cout << s.top() << " ";
s.pop();
}
cout << endl;
}

浙公网安备 33010602011771号