适配器模式实现stack和queue

适配器模式实现stack和queue

什么是适配器模式?

适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另外一个接口。

STL标准库中stack和queue的底层结构

虽然stack和queue中也可以存放元素,但在STL中并没有将其划分在容器的行列,而是将其称为容器适配器,这是因为stack和队列只是对其他容器的接口进行了包装,STL中stack和queue默认使用deque。

stack的模拟实现

cpp 复制代码
#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的模拟实现

cpp 复制代码
#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;
    };
}
相关推荐
qq_310658517 分钟前
webrtc代码走读(六)-QOS-FEC冗余度配置
网络·c++·webrtc
Aevget1 小时前
从复杂到高效:QtitanNavigation助力金融系统界面优化升级
c++·qt·金融·界面控件·ui开发
jf加菲猫1 小时前
条款20:对于类似std::shared_ptr但有可能空悬的指针使用std::weak_ptr
开发语言·c++
linff9111 小时前
hot 100 技巧题
数据结构·算法·leetcode
jf加菲猫2 小时前
条款21:优先选用std::make_unique、std::make_shared,而非直接new
开发语言·c++
scx201310042 小时前
20251019状压DP总结
c++
AI科技星3 小时前
接近光速运动下的光速不变性:基于张祥前统一场论的推导与验证
数据结构·人工智能·经验分享·算法·计算机视觉
m0_748240253 小时前
C++ 游戏开发示例:简单的贪吃蛇游戏
开发语言·c++·游戏
Summer_Uncle3 小时前
【C++学习】指针
c++·学习
蜗牛沐雨4 小时前
详解C++中的字符串流
c++·1024程序员节