源代码(C++STL库中的stack容器适配器是通过deque实现的,这里使用vector容器实现)
#include <iostream>
#include <vector>
#include <list>
using namespace std;namespace mystack {//栈的设计采用适配器模式:即通过vector、list容器来设计栈//模板参数Container就是设计栈的容器类型template<class T,class Container=vector<T>>//栈既可以通过vector容器实现,也可以通过list容器实现class stack { //通过给类模板缺省参数,即可避免每一次定义栈时需要给出它的实现容器public://入栈pushvoid push(const T& val){_con.push_back(val);}//出栈popvoid pop(){_con.pop_back();}//栈大小sizesize_t size(){return _con.size();}//栈顶元素topconst T& top(){return _con.back();}//判空emptybool empty(){return _con.empty();}private:Container _con;};
}