C++ STL 堆栈(Stack)
堆栈(Stack)是一种后进先出(LIFO)的数据结构,堆栈的元素插入称为“入栈”,元素的删除称为“出栈”。堆栈的两端分别称为栈顶(Stack Top)和栈底(Stack Bottom),入栈和出栈操作总在栈顶进行。
在 C++ STL 中,堆栈的泛化是直接通过现有的序列容器来实现的,默认使用双端队列 deque 的数据结构。当然,可以采用其他线性结构(vector 或 list 等),只要提供堆栈的入栈、出栈、栈顶元素访问和判断是否为空的操作即可。由于堆栈的底层使用的是其他容器,因此,堆栈可看做是一种适配器,将一种容器转换为另一种容器(堆栈容器)。
为了严格遵循堆栈的数据后进先出原则,stack 不提供元素的任何迭代器操作。因此,stack 容器也就不会向外部提供可用的前向或反向迭代器类型。
stack 语法
使用 stack 容器,必须先引入 <stack>
头文件。
#include <stack>
stack 容器适配器的模板有两个参数。第一个参数是存储对象的类型,第二个参数是底层容器的类型。通过指定第二个模板类型参数,可以使用任意类型的底层容器,只要它们支持 back()
、push_back()
、pop_back()
、empty()
、size()
这些操作。默认的底层容器是 deque<T>
容器。
因此,stack 容器适配器的模板定义如下:
template<class T, class Container = deque<T> > class stack;
stack<typename T, typename Container=deque<T>>
stack 成员函数
借助函数,可以在编程领域中使用对象或变量。堆栈提供了大量可以在程序中使用或嵌入的函数。相同的列表如下:
函数 | 说明 |
---|---|
(constructor) |