STL容器适配器——stack类
·
一、stack是什么
栈就好比一摞盘子,最后放上去的盘子,一定是最先被拿走的,只能操作最顶部的元素,不能直接访问中间或底部的元素。

STL中的栈是一种容器适配器,不是新容器,是对现有数据结构的改造封装,变成新数据结构。
二、stack的特点
1.后进先出(LIFO):
最后入栈的数据,最先出栈。
2.受限访问:
只能访问 / 操作栈顶元素,不能遍历、不能随机访问。
三、stack的使用
3.1 stack的初始化
| 名称 | 使用示例 | 功能说明 |
|---|---|---|
| stack() | stack<int> s; | 定义一个空int栈 |
3.2 stack类对象的容量操作
| 名称 | 使用示例 | 功能说明 |
|---|---|---|
| empty() | stack.empty() | 判断是否为空 |
| size() | stack.size() | 获取长度 |
3.3 stack类对象的访问及遍历操作
因为栈结构的特殊性,我们只能访问栈顶元素
| 名称 | 使用示例 | 功能说明 |
|---|---|---|
| top() | stack.top(); | 返回栈顶元素的引用 |
栈为空时调用会直接程序报错
3.4 stack类对象的修改操作
| 名称 | 使用示例 | 功能说明 |
|---|---|---|
| push(val); | s.push(val); | 把元素val从栈顶压入栈,后进元素放在栈最上方。 |
| pop(); | s.pop(); | 删除栈顶元素 |
演示代码
#include <stack>
#include <iostream>
using namespace std;
int main()
{
stack<int> s; // 构造空栈
s.push(20);
s.push(26);
cout << s.size(); // 输出2
cout << s.top(); // 输出26
s.pop(); //删除26
cout << s.empty(); // 输出0(非空)
return 0;
}
四、使用场景
C++ STL 中的 stack 是遵循后进先出规则的容器适配器,
底层默认依托 deque 实现,仅提供入栈、出栈、取栈顶、判空等简易接口,屏蔽多余操作保证逻辑严谨和操作简单。
常应用于函数递归调用栈、表达式括号匹配、字符串逆序、二叉树深度优先遍历、网页后退历史记录等场景
凡是需要后进入的数据先取出的业务逻辑,使用栈都能让代码简洁规范,逻辑清晰易懂。
更多推荐
所有评论(0)