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。