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


在这里插入图片描述

🎬 鸽芷咕:个人主页

 🔥 个人专栏: 《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.hqwc.cn/news/702502.html

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

相关文章

(十)Python基础练习题一(50道选择题)#Python

本文整理了Python基础知识相关的练习题&#xff0c;共50道&#xff0c;适用于刚入门初级Python想巩固基础的同学。来源&#xff1a;如荷学数据科学题库&#xff08;技术专项-Python一&#xff09;。 1&#xff09; 2&#xff09; 3&#xff09; 4&#xff09; 5&#xff09; 6…

RustGUI学习(iced)之小部件(十二):如何使用rule分割线部件来分割UI?

前言 本专栏是学习Rust的GUI库iced的合集,将介绍iced涉及的各个小部件分别介绍,最后会汇总为一个总的程序。 iced是RustGUI中比较强大的一个,目前处于发展中(即版本可能会改变),本专栏基于版本0.12.1. 概述 这是本专栏的第十二篇,主要讲述rule分割线部件的使用,会结合…

Golang | Leetcode Golang题解之第90题子集II

题目&#xff1a; 题解&#xff1a; func subsetsWithDup(nums []int) (ans [][]int) {sort.Ints(nums)n : len(nums) outer:for mask : 0; mask < 1<<n; mask {t : []int{}for i, v : range nums {if mask>>i&1 > 0 {if i > 0 && mask>&…

案例实践 | 招商局集团基于长安链的双循环航运贸易应用

案例名称-招商局双循环航运贸易联盟链 ■ 建设单位 招商局集团 ■ 用户群体 货主企业、物流企业、基础设施运营商等各参与主体 ■ 应用成效 已赋能产业链上下游超1.2万家中小微企业&#xff0c;累计提供普惠金融超830亿元 案例背景 作为全球贸易大国&#xff0c;我国约…

机器学习中常用的几种距离——欧式、余弦等

目录 一、欧式距离&#xff08;L2距离&#xff09;二、曼哈顿距离&#xff08;L1距离&#xff09;三、汉明距离四、余弦相似度 一、欧式距离&#xff08;L2距离&#xff09; &#xff08;1&#xff09;二维空间的距离公式&#xff08;三维空间的在这个基础上类推&#xff09;&…

Web课外练习7

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>照片墙</title><style>body {display: …

计算思维的理解

2006年&#xff0c;卡内基梅隆大学周以真教授首次系统性地定义了计算思维。这一年&#xff0c;她在美国计算机权威期刊《Communications of the ACM》上发表了题为《Computational Thinking》的论文&#xff0c;由此开启了计算思维大众化的全新历程。 周以真&#xff08;Jeanne…

Spring-SSM框架注解大全-每文一言(知世故而不世故 才是最善良的成熟

&#x1f390;每文一言 知世故而不世故 才是最善良的成熟 &#x1f9e8;&#x1f9e8;主要复习spring框架相关注解 目录 &#x1f9e8;&#x1f9e8;主要复习spring框架相关注解 &#x1f3af;Spring Framework &#x1f3af;Spring MVC &#x1f3af;MyBatis &#x1f…

WS2812B-Mini是一款将控制电路和RGB芯片集成在3535元器件封装中的智能控制LED光源

一般说明 WS2812B-Mini是一款将控制电路和RGB芯片集成在3535元器件封装中的智能控制LED光源。内部包括智能数字端口数据锁存器和信号整形放大驱动电路。还包括一个高精度的内部振荡器和一个可编程的恒流控制部分&#xff0c;以确保高色彩一致性。 数据传输协议采…

数据结构与算法===优先队列

文章目录 前言一、优先队列二、应用场景三、代码实现总结 前言 之前写过很多数据结构与算法相关的了&#xff0c;今天看一个新的数据结构&#xff0c;优先队列。优先队列类似队列&#xff0c;却又优先于队列&#xff0c;是堆实现的。接下来详细看看。 一、优先队列 优先队列一…

Vue3+TS实现将html或富文本编辑器转为Word并下载

说明&#xff1a;我用的富文本编辑器是wangEditor&#xff1a; wangEditor官网 安装 yarn add wangeditor/editor # 或者 npm install wangeditor/editor --save yarn add wangeditor/editor-for-vuenext # 或者 npm install wangeditor/editor-for-vuenext --save yarn add …

Django + React 全栈开发 demo

视频 https://www.youtube.com/watch?vc-QsfbznSXI 笔记 在windows 系统上开发此项目&#xff0c;Linux 命令有所不同。先写 Django&#xff0c;后写 React。 此项目实现的功能是&#xff0c;用户可以注册并登录网站&#xff0c;创建或删除 note&#xff0c;note 包含 title和…