适配器模式实现stack和queue
- 什么是适配器模式?
- STL标准库中stack和queue的底层结构
- stack的模拟实现
- queue的模拟实现
什么是适配器模式?
适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另外一个接口。
STL标准库中stack和queue的底层结构
虽然stack和queue中也可以存放元素,但在STL中并没有将其划分在容器的行列,而是将其称为容器适配器,这是因为stack和队列只是对其他容器的接口进行了包装,STL中stack和queue默认使用deque。
stack的模拟实现
#include <iostream>
#include <deque>
using namespace std;
namespace zha123
{
template<class T, class Container = deque<T>>
class stack
{
public:
void push(const T& val)
{
_con.push_back(val);
}
void pop()
{
_con.pop_back();
}
T& top()
{
return _con.back();
}
size_t size()
{
return _con.size();
}
bool empty()
{
return _con.empty();
}
private:
Container _con;
};
}
queue的模拟实现
#include <iostream>
#include <deque>
using namespace std;
namespace zha123
{
template<class T, class Container = deque<T>>
class queue
{
public:
void push(const T& x)
{
_con.push_front(x);
}
void pop()
{
_con.pop_back();
}
T& back()
{
return _con.back();
}
const T& back()const
{
return _con.back();
}
T& front()
{
return _con.front();
}
const T& front()const
{
return _con.front();
}
size_t size()const
{
return _con.size();
}
bool empty()const
{
return _con.empty();
}
private:
Container _con;
};
}