八大设计模式:适配器模式实现栈的泛型编程 | 通用数据结构接口的秘诀(文末送书)


在这里插入图片描述

🎬 鸽芷咕:个人主页

 🔥 个人专栏: 《C++干货基地》《粉丝福利》

⛺️生活的理想,就是为了理想的生活!

引入

  哈喽各位铁汁们好啊,我是博主鸽芷咕《C++干货基地》是由我的襄阳家乡零食基地有感而发,不知道各位的城市有没有这种实惠又全面的零食基地呢?C++ 本身作为一门篇底层的一种语言,世面的免费课程大多都没有教明白。所以本篇专栏的内容全是干货让大家从底层了解C++,把更多的知识由抽象到简单通俗易懂。

⛳️ 推荐

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

文章目录

  • 引入
  • ⛳️ 推荐
  • 一、什么是适配器模式
    • 1.1 适配器模式的简介
  • 二、以往我们实现栈的方法
    • 2.1 什么是泛型编程?
    • 2.2 C++中的泛型编程有哪些
  • 三、更灵活的栈实现
    • 3.1 栈的结构设计
    • 3.2 栈的实现
  • 四、图书推荐《Docker与Kubernetes容器运维实战》
    • 4.1 内容简介
    • 4.2 作者简介
    • 4.3 读者对象
    • 4.4 购买连接
  • 六、 粉丝福利&参与规则

一、什么是适配器模式

1.1 适配器模式的简介

说起适配器不知道大家第一个想到是什么,每次适配器这个词在我们生活中其实很常见手机的电源适配器就很形象可以不管什么接口的手机都可以完美的适配到什么插座上。

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

在这里插入图片描述

二、以往我们实现栈的方法

  • C语言栈的实现

在以前我们都是选择顺序表实现的因为栈的后进先出但是这是面向过程编程在C++中是面向对象编程,而且有了模版那么我们就要考虑泛型编程了

2.1 什么是泛型编程?

实质上就是不使用具体数据类型(int、double、float等),而是使用一种通用类型来进行程序设计的方法,泛泛的描述一下数据,这个方法可以大规模的减少程序代码的编写量。

泛型(Generics) 是一个非常重要的概念。 它提供了一种在编译时期进行类型检查的机制,使得我们能够创建具有通用行为的类、接口和方法,以适应不同类型的数据。 通过使用泛型,我们可以提高代码的复用性、类型 安全 性以及可读性

2.2 C++中的泛型编程有哪些

C++最成功的就是模版了,有了模版参数我们就可以想或者印刷一样不用管字是怎么排列的直接使用模版生成就好了

在这里插入图片描述

  • 其中最巨代表性的就是STL的库不管使用什么数据类型我们的 STL库都能匹配使用今天我们要模拟实现的 栈 (stack) 就是其中的一部分下面我们就来使用泛型来实现一下栈吧。

三、更灵活的栈实现

C++在有了模版之后就可以说有了革命行性的意义,使得我们在书写一个库时不用担心 类型不匹配,模版可以解决一切类型问题。而这就是泛型编程

  • 所以我们在写栈的时候,就可以参考模版来写一下
  • 以前我们的数据类型都是写死的,使用模版的多参数就完美的解决了这个问题

3.1 栈的结构设计

前面看了以前我们的栈是用一个数组来实现的,但是如果我们想要用 链表呢?

  • 这样我们就可以用模版定义一个默认容器我们可以传也可以不传
template<class T, class Container = vector<T>>class stack{public:stack(){}private:Container _con;};

这里的构造函数直接调用自定义类型的构造函数,就不需要我们去书写了

3.2 栈的实现

既然选择了容器接口那么接下来就简单了,使用容器的接口去二次封装一个栈的接口根本不需要担心底层的实现。

// 设计模式
// 适配器模式 -- 转换
// stack<int, vector<int>> st1;
// stack<int, list<int>> st2;template<class T, class Container = vector<T>>
class stack
{
public:stack(){}bool empty() {return _con.empty();}size_t size() const{return _con.size();}const T& top(){return _con.back();}void push(const T& val){_con.push_back(val);}void pop(){_con.pop_back();}private:Container _con;
};

四、图书推荐《Docker与Kubernetes容器运维实战》

帮助读者用最短的时间掌握Docker与K8s运维技能

在这里插入图片描述

4.1 内容简介

随着云计算和容器技术的发展,Docker与Kubernetes已经成为各个企业首选的部署工具,使用它们可以提高系统的部署效率和运维能力,降低运维成本。本书是一本为初学者量身定制的Docker与Kubernetes容器技术入门书,要求读者具有Linux基础。

《Docker与Kubernetes容器运维实战》共22章,第1~11章主要内容包括全面认识Docker、初步体验Docker、Docker基本管理、Docker的仓库、Docker数据管理、Dockerfile、Docker日志、Docker Compose、Docker Swarm、Docker Portainer、Docker 实战应用;第12~22章主要内容包括Kubernetes初步入门、安装Kubernetes、Kubernetes命令行工具、运行应用、通过服务访问应用、存储管理、Kubernetes软件包管理、Kubernetes网络管理、Kubernetes Dashboard、Kubernetes安全、Kubernetes集群管理。

《Docker与Kubernetes容器运维实战》内容详尽、示例丰富,是广大Docker与Kubernetes入门读者的必备参考书,同时也非常适合作为高等院校或高职、高专计算机及相关专业的教材使用。

4.2 作者简介

在这里插入图片描述

4.3 读者对象

  • Docker与Kubernetes初学者

  • 运维工程师

  • 前端开发人员

  • 后端开发人员

  • 快速部署研发、测试、生产环境的IT人员

  • 对容器和容器管理有兴趣的高校学生

4.4 购买连接

《Docker与Kubernetes容器运维实战》: https://item.m.jd.com

六、 粉丝福利&参与规则

  • 参与方式:关注博主、点赞收藏评论,任意评论(每人最多评论三次)

  • ⛳️本次送书5取决于阅读量,阅读量越多,送的越多

  • 📆 活动时间至:2024-5-19 20:00:00 | 随机抽取由博主动态公布抽奖结果

如有特别需要的同学可添加博主微信进入粉丝福利群发放福利哦!

🔥 注:活动结束后,会私信中奖粉丝的,各位注意查看私信哦!

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/328342.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【EasyX】快速入门——静态图形篇

1.基本说明 EasyX 是针对 C 的图形库&#xff0c;可以帮助 C/C 初学者快速上手图形和游戏编程。 比如&#xff0c;可以基于 EasyX 图形库很快的用几何图形画一个房子&#xff0c;或者一辆移动的小车&#xff0c;可以编写俄罗斯方块、贪吃蛇、黑白棋等小游戏&#xff0c;可以练…

【计算机毕业设计】springboot成都奥科厨具厂产品在线销售系统设计与实现

时代在飞速进步&#xff0c;每个行业都在努力发展现在先进技术&#xff0c;通过这些先进的技术来提高自己的水平和优势&#xff0c;成都奥科厨具厂产品在线销售系统当然不能排除在外。成都奥科厨具厂产品在线销售系统是在实际应用和 软件工程的开发原理之上&#xff0c;运用jav…

栈和队列经典面试题详解

目录 题目一&#xff1a;20. 有效的括号 - 力扣&#xff08;LeetCode&#xff09; 题目二&#xff1a;225. 用队列实现栈 - 力扣&#xff08;LeetCode&#xff09; 题目三&#xff1a;232. 用栈实现队列 - 力扣&#xff08;LeetCode&#xff09; 题目四&#xff1a;622. 设…

2024年最新软件测试面试题必问的1000题!

我了解的测试理论和方法包括以下几个方面&#xff1a; 黑盒测试与白盒测试&#xff1a; 黑盒测试&#xff1a;基于对软件系统外部行为进行测试&#xff0c;独立于内部代码实现细节。黑盒测试关注输入与输出之间的关系以及软件功能是否符合预期。白盒测试&#xff1a;基于对软件…

C语言简要(一)

总得让她开心吧 helloworld #include <stdio.h>int main() {printf("hello world!\n");return 0; } 程序框架 #include <stdio.h> int main {return 0; }输出 printf("hello world!\n"); "里面的内容叫做“字符串”&#xff0c;prin…

基于Springboot+Vue的Java项目-宠物商城网站系统开发实战(附演示视频+源码+LW)

大家好&#xff01;我是程序员一帆&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &am…

AI图像生成-基本步骤

模型板块 1、新建采样器&#xff1a;新建节点-》采样器-》K采样器 2、拖动模型节点后放开&#xff0c;选择checkpoint加载器&#xff08;简易&#xff09;&#xff0c;模型新建成功 提示词板块 1、拖动正面条件节点后放开&#xff0c;选择CLIP文本编码器&#xff0c;模型新建…

43k Star!推荐一款功能强大的开源笔记软件!

程序员的公众号&#xff1a;源1024&#xff0c;获取更多资料&#xff0c;无加密无套路&#xff01; 最近整理了一份大厂面试资料《史上最全大厂面试题》&#xff0c;Springboot、微服务、算法、数据结构、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、数据库等等 …

dubbo复习:(3) 服务超时时间配置

在dubbo admin中 可以进行类似如下配置 configVersion: v2.7 enabled: true configs:- side: consumeraddresses:- 0.0.0.0parameters:timeout: 55这样配置之后&#xff0c;当服务端响应超过55毫秒时&#xff0c;在服务消费者的控制台就会看到超时信息

【定制化】在Android平台实现自定义的程序启动页

特别说明&#xff1a;以下仅适用于Android平台。 实现原理 创建安卓端自定义的Activity禁用UnityPlayerActivity的启动Logo改用自定义Activity 示例效果 参考简单步骤或详细步骤都可实现。 自定义的启动动画&#xff0c;效果如下&#xff1a; 简单步骤 三步操作实现启动动画…

Jmeter+Grafana+Prometheus搭建压测监控平台

本文不介绍压测的规范与技术指标&#xff0c;本文是演示针对Jmeter如何将压测过程中的数据指标&#xff0c;通过Prometheus采集存储&#xff0c;并在Granfan平台进行仪表盘展示; 介绍 系统压测属于日常项目开发中的一个测试环节&#xff0c;使用测试工具模拟真实用户行为&…

27.哀家要长脑子了!

目录 1.316. 去除重复字母 - 力扣&#xff08;LeetCode&#xff09; 2. 1209. 删除字符串中的所有相邻重复项 II - 力扣&#xff08;LeetCode 哎哟 烦死了 刚刚不小心退出又没保存 又要写一遍 烦死了 最近刷题不得劲啊 感觉这脑子没长一点 1.316. 去除重复字母 - 力扣&am…

VMware Workstation 安装CentOS Linux操作系统

1.我们已经下载好VMware 创建新的虚拟机 2.选择典型 3.安装程序光盘映像文件 4.配置用户名密码 5.命名虚拟机&#xff0c;并确定位置 6.如图所示设置 7.等待&#xff08;时间会有点久&#xff09; 8.输入密码登入账号

【软件测试】需求概念|软件的⽣命周期|开发模型|测试模型

目录 推荐 一、什么是需求 1.1 ⽤⼾需求 1.2 软件需求 二、开发模型 2.1 什么是“模型” 2.2 软件的⽣命周期 2.3 常⻅开发模型 2.3.1 瀑布模型 2.3.2 螺旋模型 2.3.3 增量模型、迭代模型 2.3.4 敏捷模型 2.4 测试模型 2.4.1 V模型 2.4.2 W模型(双V模型&#xff0…

恭喜莱佛士设计学院学生成功入围第13届Hiiibrand Awards

第十三届Hiiibrand Awards&#xff08;国际品牌&传播设计奖&#xff09;共收到来自40多个国家或地区的有效参赛作品共1723件。 经过激烈的竞争&#xff0c;我们莱佛士设计学院的三位同学成功入围提名&#xff08;学生组&#xff09;&#xff0c;他们分别是来自多媒体设计专…

寻求发展+兼顾陪读|企业高管赴美国乔治梅森大学做访问学者

E经理拟去美国访学&#xff0c;想达到3个目的&#xff1a;结合本专业方向&#xff0c;扩展至跨学科研究领域&#xff1b;考察市场&#xff0c;寻求新的发展契机&#xff1b;携孩子出国读书&#xff0c;兼顾陪读&#xff0c;并希望尽早出国。最终我们为其落实的乔治梅森大学访问…

蓝桥杯成绩已出

蓝桥杯的成绩早就已经出来了&#xff0c;虽然没有十分惊艳 &#xff0c;但是对于最终的结果我是心满意足的&#xff0c;感谢各位的陪伴&#xff0c;关于蓝桥杯的刷题笔记我已经坚持更新了49篇&#xff0c;但是现在即将会告别一段落&#xff0c;人生即将进入下一个规划。我们一起…

【新手入门】Github与Git使用教程

Github与Git 一、Github基础教程 1.1 基本操作 点击代码文件可以直接查看文件的内容&#xff0c;支持在线修改文件&#xff0c;只需要点击(文件内容)右上角的编辑按钮即可进行编辑。 README.md一般介绍项目的功能&#xff0c;用法&#xff0c;注意事项&#xff1b;有时还有…

银行ETL-监管报送

1104报表 1104报表主要包括&#xff1a;资产负债&#xff0c;表外业务、流动性风险、贷款质量、投向行业和地区、重点客户等。 1104报表分类 普通报表、特色类报表。 反洗钱 大额交易、可疑交易。标签分类&#xff1a;疑似犯罪、疑似毒品、疑似传销。 反洗钱—接口报表 数…