目錄
stack
stack都有哪些接口?
模擬實現一個stack
stack
????????1. stack是一種容器適配器,專門用在具有后進先出操作的上下文環境中,其刪除只能從容器的一端進行元素的插入與提取操作。
????????2. stack是作為容器適配器被實現的,容器適配器即是對特定類封裝作為其底層的容器,并提供一組特定的成員函數來訪問其元素,將特定類作為其底層的,元素特定容器的尾部(即棧頂)被壓入和彈出。
????????3. stack的底層容器可以是任何標準的容器類模板或者一些其他特定的容器類,這些容器類應該支持以下操作:
empty:判空操作
back:獲取尾部元素操作push_back:尾部插入元素操作
pop_back:尾部刪除元素操作
????????4. 標準容器vector、deque、list均符合這些需求,默認情況下,如果沒有為stack指定特定的底層容器,默認情況下使用deque? ? ? ? 注明:
????????stack是一種容器適配器,什么是容器適配器,容器適配器是一種設計模式,設計模式約有二十多種。字面意思就是為了某一行為,將容器進行適配,也就是封裝,形成新的“器”。類似生活中的,電腦接口擴展塢,同一插座適配不同功率的電源。
stack都有哪些接口?
模擬實現一個stack
namespace ljy
{template <class T,class Container = deque<T>>class stack{public:void push(const T& x){_con.push_back(x);}void pop(){_con.pop_back();}size_t size()const{return _con.size();}bool empty()const{return _con.empty();}T& top(){return _con.back();}private:Container _con;};
}