适配器模式实现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;
    };
}
相关推荐
W23035765737 小时前
经典算法:最长上升子序列(LIS)深度解析 C++ 实现
开发语言·c++·算法
.Ashy.7 小时前
2026.4.11 蓝桥杯软件类C/C++ G组山东省赛 小记
c语言·c++·蓝桥杯
2401_892070987 小时前
链栈(链式栈) 超详细实现(C 语言 + 逐行精讲)
c语言·数据结构·链栈
minji...8 小时前
Linux 线程同步与互斥(三) 生产者消费者模型,基于阻塞队列的生产者消费者模型的代码实现
linux·运维·服务器·开发语言·网络·c++·算法
CoderCodingNo10 小时前
【GESP】C++三级真题 luogu-B4499, [GESP202603 三级] 二进制回文串
数据结构·c++·算法
网安INF11 小时前
数据结构第三章:栈、队列和数组
数据结构
hetao173383712 小时前
2026-04-09~12 hetao1733837 的刷题记录
c++·算法
6Hzlia12 小时前
【Hot 100 刷题计划】 LeetCode 136. 只出现一次的数字 | C++ 哈希表&异或基础解法
c++·算法·leetcode
汉克老师12 小时前
GESP2024年6月认证C++三级( 第二部分判断题(1-10))
c++·数组·位运算·补码·gesp三级·gesp3级
yuannl1013 小时前
数据结构----双端队列实现
数据结构