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

猜你喜欢

转载自blog.csdn.net/m0_72482689/article/details/132433770