适配器模式实现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;
    };
}
相关推荐
自然数e40 分钟前
C++多线程【线程管控】之线程转移以及线程数量和ID
开发语言·c++·算法·多线程
Chan162 小时前
Java 集合面试核心:ArrayList/LinkedList 底层数据结构,HashMap扩容机制详解
java·数据结构·spring boot·面试·intellij-idea
cheniie3 小时前
【Janet】数据结构
数据结构·janet
xier_ran3 小时前
力扣(LeetCode)100题:41.缺失的第一个正数
数据结构·算法·leetcode
Elias不吃糖3 小时前
epoll 事件全集、每个事件的含义、哪些事件在实际服务器中最常见、哪些会组合出现
linux·c++·event
AA陈超3 小时前
ASC学习笔记0017:返回此能力系统组件的所有属性列表
c++·笔记·学习·ue5·虚幻引擎
Unlyrical3 小时前
splice, io_uring_prep_splice 调用(无效参数)
linux·服务器·c++·unix
Lucis__4 小时前
STL设计模式探秘:容器适配器&仿函数
c++·容器·stl·仿函数
无敌最俊朗@5 小时前
C++ 对象布局之padding(填充字节)
开发语言·c++
Miraitowa_cheems5 小时前
LeetCode算法日记 - Day 104: 通配符匹配
linux·数据结构·算法·leetcode·深度优先·动态规划