C++ - STL - 栈

栈(Stack)是C++标准模板库(STL)中一个非常重要的容器适配器,它遵循后进先出(LIFO)的原则。无论你是刚接触数据结构的新手,还是需要快速回顾栈用法的开发者,这篇博客都将为你提供全面的指导。

什么是栈?

栈是一种只允许在一端进行插入和删除操作的线性数据结构。想象一下一叠盘子——你只能从最上面取放盘子,这就是栈的工作原理。

image

栈的入栈和出栈操作

image

image

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;
}
posted @ 2025-11-21 11:33  一亩食堂  阅读(39)  评论(0)    收藏  举报