1. stack
以某种既有容器做为底部结构,将其接口改变,使符合「先进后出」的特性,形 成一个 stack,是很容易做到的。deque 是双向开口的数据结构,若以 deque 为 底部结构并封闭其头端开口,便轻而易举㆞形成了㆒个 stack。因此,SGI STL 便 以 deque 做为预设情况下的 stack 底部结构。由于 stack 系以底部容器完成其所有工作,而具有这种「修改某物接口,形成另 一种风貌」之性质者,称为 adapter(配接器),因此 STL stack 往往不被归类 为 container(容器),而被归类为 container adapter。
将元素推入 stack 的动作称为 push,将元素推出 queue 的动作称为 pop。
stack 所有元素的进出都必须符合「先进后出」的条件,只有 stack 顶端的元素, 才有机会被外界取用。stack 不提供走访功能,也不提供迭代器。
除了 deque 之外,list 也是双向开口的数据结构。stack 源码中使用的底层容器的函式有 empty, size, back, push_back, pop_back,凡此种种 list 都具备。因此若以 list 为底部结构并封闭其头端开口,一样能够轻易形成㆒个 stack。
2. queue
将元素推入 queue 的动作称为 push,将元素推出 queue 的动作称为 pop。
同理queue可以用deque 和 list 作为底层容器。