适配器模式实现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;};
}