源代码(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:
//入栈push
void push(const T& val)
{
_con.push_back(val);
}
//出栈pop
void pop()
{
_con.pop_back();
}
//栈大小size
size_t size()
{
return _con.size();
}
//栈顶元素top
const T& top()
{
return _con.back();
}
//判空empty
bool empty()
{
return _con.empty();
}
private:
Container _con;
};
}