📅  最后修改于: 2023-12-03 15:35:09.444000             🧑  作者: Mango
std::stack
是C++ STL库中的一个容器适配器,它基于模板类std::deque
(双端队列)的封装。它是一个后进先出(LIFO)的数据结构,可以在容器最前端进行插入和删除操作。
#include <stack>
std::stack<type> name;
// 创建一个int类型的空栈
std::stack<int> numStack;
// 创建一个字符串类型的空栈
std::stack<std::string> strStack;
在栈顶插入新的元素。
void push (const value_type& val);
std::stack<int> numStack;
numStack.push(1);
numStack.push(2);
numStack.push(3);
移除位于栈顶的元素。
void pop();
std::stack<int> numStack;
numStack.push(1);
numStack.push(2);
numStack.push(3);
numStack.pop(); // 移除3
访问栈顶元素。
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
检查栈是否为空。
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_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;
}