C++ 语言中的 STL 标准模板库 中的 stack 堆栈容器 , 是一个 后进先出 ( LIFO , Last In First Out ) 的容器 , stack 容器提供了在栈顶进行插入和删除操作 ;
使用 stack 容器前 , 需要导入 <stack> 头文件 ;
#include "stack"
stack 堆栈容器 是在 deque 双端数组 的基础上 , 屏蔽了部分功能 实现的 ; deque 功能比 stack 功能要强大一些 ;
stack 堆栈容器特点 :
stack 堆栈容器与 deque 双端数组容器对比 :
在下面的代码中 :
首先 , 创建了 stack 堆栈容器对象 , 容器中存储 int 类型对象 ;
// 创建 stack 堆栈容器对象
std::stack<int> s;
然后 , 向 stack 容器加入元素 , 又称为 入栈操作 , 将元素加入到栈顶 ;
// 入栈操作
s.push(1);
s.push(2);
s.push(3);
再后 , 调用 std::stack#top() 函数 , 可以打印栈顶元素 ;
// 打印栈顶元素
std::cout << "栈顶元素 : " << s.top() << std::endl;
最后 , 调用 std::stack#pop() 函数 , 将栈顶元素弹出 ;
// 出栈
s.pop();
如果想要判定 stack 容器中的元素是否都弹出栈 , 可调用 std::stack#empty() 函数 进行判定 ;
while (!s.empty()) {
// 打印栈顶元素
std::cout << "栈顶元素 : " << s.top() << std::endl;
// 出栈
s.pop();
}
代码示例 :
#include "iostream"
using namespace std;
#include "stack"
int main() {
// 创建 stack 堆栈容器对象
std::stack<int> s;
// 入栈操作
s.push(1);
s.push(2);
s.push(3);
// 出栈操作
while (!s.empty()) {
// 打印栈顶元素
std::cout << "栈顶元素 : " << s.top() << std::endl;
// 出栈
s.pop();
}
// 控制台暂停 , 按任意键继续向后执行
system("pause");
return 0;
};
执行结果 :
栈顶元素 : 3
栈顶元素 : 2
栈顶元素 : 1
请按任意键继续. . .