栈就是一种特殊的vector ,使用vector实现栈的后进先出的特点即可。
namespace ding
{
template<class T, class Container = vector<T>>
class stack
{
public:
//构造函数等都不需实现,调用容器的构造即可
void push(const T& x)
{
_con.push_back(x);
}
T top()
{
return _con.back();
}
void pop()
{
_con.pop_back();
}
bool empty()
{
return _con.empty();
}
size_t szie()
{
return _con.size();
}
private:
Container _con;
};
}
#include <iostream>
#include <list>
namespace ding
{
template<class T, class Container = std::list<T>>
class queue
{
public:
//入队列从尾部入
void push(const T& val)
{
_con.push_bakc(val);
}
//出队列从头部出
void pop()
{
_con.pop_front();
}
bool empty()
{
_con.empty();
}
size_t size()
{
return _con.size();
}
T& front()
{
return _con.front();
}
T& back()
{
return _con.back();
}
private:
Container _con;
};
}
使用不同得底层容器 实现不同物理结构得队列
ding::queue<int,std::vector<int>> q1;//顺序队列
ding::queue<int,std::list<int>> q2;//链式队列