STL容器系列文章:stack容器
程序员文章站
2024-03-18 13:09:28
...
1. 头文件
#include <stack>
2. 定义
- 是一种LIFO(后进先出)的数据结构,单端开口的容器,模拟栈的存储结构。如下图
- 容器模板类
template<class T, class Container = deque<T> > class stack
// T: 元素类型,可以是int/double等
// Container: 底层采用的基础容器类型,默认是deque
- Container只能是序列容器:vector/deque/list,该容器需要同时支持empty()/size()/back/push_back()/pop_back五个函数操作
3. 对象创建
方法 | 说明 |
---|---|
stack firstStack; | 存放int类型的空栈,size = 0,默认基础容器类型deque |
stack<int, vector> secondStack; | 用vector实现一个空栈 |
deque myDeque (3 , 100); stack thirdStack(myDeque); | 使用基础容器来初始化栈:deque |
vector myVector (2, 200); stack<int, vector> fourthStack(myVector); | 使用基础容器来初始化栈:vector |
4. 常用方法
方法 | 说明 |
---|---|
empty() | 栈中无元素返回true,有元素返回false |
size() | 栈中元素的个数 |
top() | 返回栈顶元素的引用T&,栈为空会报错 |
push(const T& obj) | 拷贝构造函数;调用底层容器的push_back()函数完成 |
push(T&& obj) | 移动构造函数;调用底层容器有右值引用的push_back()函数 |
pop() | 弹出栈顶元素 |
emplace(arg, …) | 一个或多个参数,用于构造同一个对象,并直接作为栈顶元素 |
swap(stack& otherStack) | 两个栈中元素互换,底层基础容器类型需一致 |
5. 使用实例
leetcode
created by shuaixio, 2021.06.23
上一篇: 使用LinkedList模拟一个堆栈或者队列数据结构 java
下一篇: 二十一:拓展水仙花