适配器模式实现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;
    };
}
相关推荐
来荔枝一大筐1 小时前
C++ LeetCode 力扣刷题 541. 反转字符串 II
c++·算法·leetcode
报错小能手1 小时前
C++笔记——STL list
c++·笔记
T.Ree.1 小时前
cpp_list
开发语言·数据结构·c++·list
laocooon5238578861 小时前
C++ 图片加背景音乐的处理
开发语言·c++
apocelipes1 小时前
POSIX兼容系统上read和write系统调用的行为总结
linux·c语言·c++·python·golang·linux编程
No0d1es1 小时前
2025年第十六届蓝桥杯青少组省赛 C++编程 中级组真题
c++·青少年编程·蓝桥杯·省赛
童话ing2 小时前
【Golang】常见数据结构原理剖析
数据结构·golang
千禧皓月2 小时前
【C++】基于C++的RPC分布式网络通信框架(二)
c++·分布式·rpc
是苏浙2 小时前
零基础入门C语言之C语言实现数据结构之顺序表应用
c语言·数据结构·算法
AA陈超2 小时前
虚幻引擎5 GAS开发俯视角RPG游戏 P07-08 点击移动
c++·游戏·ue5·游戏引擎·虚幻