📜  std::stack - C++ (1)

📅  最后修改于: 2023-12-03 15:35:09.444000             🧑  作者: Mango

std::stack - C++

std::stack 是C++ STL库中的一个容器适配器,它基于模板类std::deque(双端队列)的封装。它是一个后进先出(LIFO)的数据结构,可以在容器最前端进行插入和删除操作。

头文件
#include <stack>
基本语法
std::stack<type> name;

// 创建一个int类型的空栈
std::stack<int> numStack;

// 创建一个字符串类型的空栈
std::stack<std::string> strStack;
常用接口
push()

在栈顶插入新的元素。

void push (const value_type& val);
std::stack<int> numStack;
numStack.push(1);
numStack.push(2);
numStack.push(3);
pop()

移除位于栈顶的元素。

void pop();
std::stack<int> numStack;
numStack.push(1);
numStack.push(2);
numStack.push(3);
numStack.pop(); // 移除3
top()

访问栈顶元素。

value_type& top();
const value_type& top() const;
std::stack<int> numStack;
numStack.push(1);
numStack.push(2);
numStack.push(3);
std::cout << numStack.top() << std::endl; // 输出3
empty()

检查栈是否为空。

bool empty() const;
std::stack<int> numStack;
std::cout << numStack.empty() << std::endl; // 输出1 (true)
numStack.push(1);
std::cout << numStack.empty() << std::endl; // 输出0 (false)
size()

返回栈中元素的数量。

size_type size() const;
std::stack<int> numStack;
std::cout << numStack.size() << std::endl; // 输出0
numStack.push(1);
numStack.push(2);
numStack.push(3);
std::cout << numStack.size() << std::endl; // 输出3
示例
#include <iostream>
#include <stack>

int main() {
    std::stack<int> numStack;
    // 将1,2,3压入栈
    numStack.push(1);
    numStack.push(2);
    numStack.push(3);

    std::cout << numStack.top() << std::endl; // 输出3

    // 弹出一个元素后输出
    numStack.pop();
    std::cout << numStack.top() << std::endl; // 输出2

    std::cout << numStack.size() << std::endl; // 输出2

    while (!numStack.empty()) {
        std::cout << numStack.top() << " ";
        numStack.pop();
    } // 输出 2 1
    return 0;
}