stack其实是一个配接器(adapter),因为SGI的STL缺省情况下是以deque作为底层结构的,即修改某物接口,形成另一种数据结构。
到目前为止,我们总结一下学过的容器的压入和弹出操作。
vector:只能在尾端操作,push_back, pop_back;
list:由于stl中的list是一个双向环状链表,可以在头部和尾部进入操作,push_front,push_back,pop_front,pop_back。
deque:由于是双端队列,支持双向操作,和list相同。
而这一节我们要学习的是堆栈,支持后入先出的规则,只能在栈顶操作,所以压入和弹出元素为push和pop,注意并没有back。
stack的实现很简单,只需要将底层结构进行约束就可以了。
由于stack后进先出的规则,所以并无走访功能,且stack是没有迭代器的。
1、SGI中STL默认情况下是以双端队列为底层结构的,我们知道list也是双向开口的,因此也可以以list为底层结构,具体如下;
#include<stack>
stack<int, list<int> > mystack;
这样的底层结构就是双向链表list。