C++学习,标准库 <stack>

C++ 标准库提供了多种容器和算法,<stack> 是 C++ 标准模板库(STL),它实现了一个后进先出(LIFO,Last In First Out)的数据结构。这种数据结构非常适合于需要"最后添加的元素最先被移除"的场景。

<stack> 容器适配器提供了一个栈的接口,它基于其他容器(如 deque 或 vector)来实现。栈的元素是线性排列的,但只允许在一端(栈顶)进行添加和移除操作。

模板参数:
template <class T, class Container = deque<T>> class stack;
T:是栈中存储的元素类型,可以是任何有效的 C++ 类型,甚至是用户自定义类型。
Container:是底层容器的类型,默认是 deque(双端队列)。这意味着 stack 内部是基于 deque 来实现的,但你也可以使用其他符合要求的容器,如 vector 或 list,不过这可能会影响 stack 的性能和行为。

成员函数:
push(): 在栈顶添加一个元素。
pop(): 移除栈顶元素。
top(): 返回栈顶元素的引用,但不移除它。
empty(): 检查栈是否为空。
size(): 返回栈中元素的数量。

示例:
#include <iostream>
#include <stack>

    int main() {
        std::stack<int> myStack;

        // 入栈操作
        myStack.push(10);
        myStack.push(20);
        myStack.push(30);

        // 获取栈顶元素
        std::cout << "Top element: " << myStack.top() << std::endl;

        // 出栈操作
        myStack.pop();
        std::cout << "After pop, top element: " << myStack.top() << std::endl;

        // 检查栈是否为空
        if (myStack.empty()) {
            std::cout << "Stack is empty" << std::endl;
        } else {
            std::cout << "Stack is not empty" << std::endl;
        }

        // 获取栈的大小
        std::cout << "Size of stack: " << myStack.size() << std::endl;

        return 0;
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值