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();
}
const T& Top() const{
return _con.back();
}
private:
Container _con;
};
测试代码:
void TestStack(){
/* 都支持 */
/*适配体现在第二个模板参数可以使用不同的容器,然后适配生成的stack效果是一样的*/
//Stack<int, vector<int>> s;
//Stack<int, list<int>> s;
//Stack<int> s;
Stack<int, deque<int>> s;
s.Push(1);
s.Push(2);
s.Push(3);
s.Push(4);
while (!s.Empty()){
cout << s.Top() << endl;
s.Pop();
}
}
输出结果:
4
3
2
1