C++ STL 堆栈(Stack)
堆栈(Stack)是一种后进先出(LIFO)的数据结构,堆栈的元素插入称为“入栈”,元素的删除称为“出栈”。堆栈的两端分别称为栈顶(Stack Top)和栈底(Stack Bottom),入栈和出栈操作总在栈顶进行。
在 C++ STL 中,堆栈的泛化是直接通过现有的序列容器来实现的,默认使用双端队列 deque 的数据结构。当然,可以采用其他线性结构(vector 或 list 等),只要提供堆栈的入栈、出栈、栈顶元素访问和判断是否为空的操作即可。由于堆栈的底层使用的是其他容器,因此,堆栈可看做是一种适配器,将一种容器转换为另一种容器(堆栈容器)。
为了严格遵循堆栈的数据后进先出原则,stack 不提供元素的任何迭代器操作。因此,stack 容器也就不会向外部提供可用的前向或反向迭代器类型。