适配器模式实现stack和queue

news/2024/11/16 11:55:42/

适配器模式实现stack和queue

  • 什么是适配器模式?
  • STL标准库中stack和queue的底层结构
  • 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;};
}

http://www.ppmy.cn/news/1052892.html

相关文章

AcWing算法基础课第四讲动态规划(2): 线性DP、区间DP

文章目录 &#xff08;1&#xff09;线性DP898. 数字三角形895. 最长上升子序列897. 最长公共子序列 &#xff08;2) 区间DP282. 石子合并区间 DP 常用模版 &#xff08;1&#xff09;线性DP 898. 数字三角形 题目链接 给定一个如下图所示的数字三角形&#xff0c;从顶部出发…

Lnton羚通云算力平台OpenCV-PythonCanny边缘检测教程

Canny 边缘检测是一种经典的边缘检测算法&#xff0c;由 John F. Canny 在 1986 年提出。它被广泛应用于计算机视觉和图像处理领域&#xff0c;用于检测图像中的边缘。 ​【原理】 1. 去噪 由于边缘检测非常容易收到图像的噪声影响&#xff0c;第一步使用 5x5 高斯滤波去除图…

Android Camere开发入门(1):初识Camera

Android Camere开发入门(1):初识Camera 初步了解 在Android开发中,相机(Camera)是一个常见而重要的功能模块。它允许我们通过设备的摄像头捕捉照片和录制视频,为我们的应用程序增加图像处理和视觉交互的能力。 随着Android系统的不断发展和更新,相机功能也不断改进和增…

系统架构设计师之缓存技术:Redis与Memcache能力比较

系统架构设计师之缓存技术&#xff1a;Redis与Memcache能力比较

数学建模知识之小白入门篇

数学建模知识--小白入门篇 一、数学模型的定义二、建立数学模型的方法和步骤1. 模型准备2. 模型假设3. 模型构成4. 模型求解5. 模型分析 三、数模竞赛出题的指导思想四、竞赛中的常见题型1. 实际问题背景2&#xff0e;若干假设条件3&#xff0e;要求回答的问题 五、提交一篇论文…

【C#基础】unity中结构体的使用

【C#基础】unity中结构体的使用 结构体&#xff08;Struct&#xff09;是值类型数据结构&#xff0c;在栈上分配内存&#xff0c;可以包含字段&#xff0c;属性&#xff0c;方法&#xff0c;构造函数。结构体可以实现接口&#xff0c;但是不能继承。在Dots里有大量依靠Struct实…

二分查找(Binary Search)及常见的具体实现(C++和Python)

二分查找&#xff08;Binary Search&#xff09;及常见的具体实现(C和Python) 二分查找是一种在有序数组中查找特定元素的算法。它通过将目标值与数组中间元素进行比较&#xff0c;从而排除掉一半的元素。如果目标值小于中间元素&#xff0c;则在数组的左半部分继续查找&#x…

STM32f103c6t6/STM32f103c8t6寄存器开发

目录 资料 寻址区 2区 TIMx RTC WWDG IWDG SPI I2S USART I2C USB全速设备寄存器 bxCAN BKP PWR DAC ADC ​编辑 EXTI ​编辑 GPIO AFIO SDIO DMA CRC RCC FSMC USB_OTG ETH&#xff08;以太网&#xff09; 7区 配置流程 外部中断 硬件中断 例子 点灯 …