八大設計模式:適配器模式實現棧的泛型編程 | 通用數據結構接口的秘訣(文末送書)


在這里插入圖片描述

🎬 鴿芷咕:個人主頁

?🔥 個人專欄: 《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.pswp.cn/diannao/12642.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/12642.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/12642.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Leetcode—3146. 兩個字符串的排列差【簡單】

2024每日刷題&#xff08;135&#xff09; Leetcode—3146. 兩個字符串的排列差 實現代碼 class Solution { public:int findPermutationDifference(string s, string t) {int maps[26];int mapt[26];for(int i 0; i < s.size(); i) {int idxs s[i] - a;int idxt t[i] …

上門回收小程序:打破傳統回收模式的局限性

一、引言 在環保意識日益增強的今天&#xff0c;廢品回收已成為我們日常生活中不可或缺的一部分。然而&#xff0c;傳統的回收模式存在著效率低下、回收范圍有限等局限性。為了打破這些局限&#xff0c;我們推出了上門回收小程序&#xff0c;旨在通過數字化、智能化的方式&…

Flutter+Getx仿小米商城項目實戰教程又新增了Flutter調用原生地圖

FlutterGetx仿小米商城項目實戰教程基于Flutter3.x錄制&#xff0c;課程緊貼企業需求&#xff0c;目前已完結176講。教程所講內容支持Android、Ios、華為鴻蒙OS&#xff0c;教程更新于2024年4月09日新增 Flutter 調用百度地圖、新增Flutter充電樁項目地圖實戰。支持2024年3月29…

AXI GPIO IP核配置詳解

AXI GPIO&#xff08;AXI General-Purpose Input/Output&#xff09;設計提供了一個通用的輸入/輸出接口&#xff0c;該接口連接到一個AXI4-Lite接口。AXI GPIO可以被配置為單通道或雙通道設備&#xff0c;每個通道的位寬可以獨立配置。 端口&#xff08;即GPIO引腳&#xff0…

學習java第七十天

Spring 的常用注解&#xff1f; Required:該注解應用于設值方法 Autowired&#xff1a;該注解應用于有值設值方法、非設值方法、構造方法和變量。 Qualifier&#xff1a;該注解和Autowired 搭配使用&#xff0c;用于消除特定 bean 自動裝配的歧義 Spring的事務傳播行為有哪…

02-WPF_基礎(一)

1、基礎 各模塊類型 鏈接&#xff1a;如何&#xff1a;向 Viewbox 的內容應用 Stretch 屬性 - WPF .NET Framework | Microsoft Learn WPF基礎以及事件綁定與數據綁定的情況&#xff0c;&#xff0c;在學習XAML&#xff0c;數據結構以及一個項目學習平臺來練手&#xff0c;網絡…

兒童社交恐懼:關愛與引導,幫助孩子走出陰霾

引言 兒童的社交能力是其心理健康和全面發展的重要組成部分。然而&#xff0c;有些兒童會表現出社交恐懼&#xff0c;這種情況不僅影響他們的日常生活和學習&#xff0c;還可能對其長遠發展產生不利影響。本文將探討兒童社交恐懼的注意事項&#xff0c;并提供實用的建議和方法…

jvm故障定位

? cpu使用率低負載高&#xff0c;原因分析-----舉例命令排查過程 原因&#xff1a;大量線程io阻塞。 建議從以下幾個方面排查代碼問題&#xff1a; 1、是否有內存泄露導致頻繁GC 2、是否有死鎖發生 3、是否有大字段的讀寫 4、會不會是數據庫操作導致的&#xff0c;排查SQL語…

百面算法工程師 | YOLOv6面試考點原理全解析

本文給大家帶來的百面算法工程師是深度學習目標檢測YOLOv6面試總結&#xff0c;文章內總結了常見的提問問題&#xff0c;旨在為廣大學子模擬出更貼合實際的面試問答場景。在這篇文章中&#xff0c;我們還將介紹一些常見的深度學習目標檢測面試問題&#xff0c;并提供參考的回答…

壓力給到 Google,OpenAI 發布 GPT-4o 來了

北京時間5月14日凌晨1點&#xff0c;OpenAI 開啟了今年的第一次直播&#xff0c;根據官方消息&#xff0c;這次旨在演示 ChatGPT 和 GPT-4 的升級內容。在早些時候 Sam Altman 在 X 上已經明確&#xff0c;「我們一直在努力開發一些我們認為人們會喜歡的新東西&#xff0c;對我…

jar包安裝成Windows服務

一、前言 很多年前寫過一篇《使用java service wrapper把windows flume做成服務》的文章&#xff0c;也是把jar包安裝成windows服務&#xff0c;今天介紹另外一種更簡便的方案。 二、正片 這次使用的工具是 winsw&#xff0c;一個Windows服務包裝器。下面看詳細介紹 首先從g…

momentjs

Moment.js 是一個用于處理日期和時間的 JavaScript 庫&#xff0c;它提供了許多方便的函數和方法來操作、格式化和解析日期時間。官網 常見用法 格式化日期時間&#xff1a;可以使用format方法將日期時間格式化為指定的字符串格式&#xff0c;例如YYYY-MM-DD HH:mm:ss。獲取日…

中國CEO直播簡史

圖片&#xff5c;電影《教父》截圖 ©自象限原創 作者丨羅輯 編輯丨程心 領導人愛對外發言這事&#xff0c;是中國的一個傳統文化。 從乾隆愛往名畫上蓋章上&#xff0c;就可見一斑。 3Q大戰時代&#xff0c;微博成了大佬“吵架”的戰場&#xff0c;飯否變成了部分愛…

解釋Java中的動態代理(Dynamic Proxy)及其用例

在Java中&#xff0c;動態代理&#xff08;Dynamic Proxy&#xff09;是一種在運行時動態創建代理類和對象的機制。它允許你在不改變原有類代碼的前提下&#xff0c;通過代理類對原有類的方法增加額外的處理邏輯&#xff08;如安全檢查、事務處理、日志記錄等&#xff09;&…

在為法人主體添加平衡段值時選不到相應的平衡段值

1、在為H1038公司添加平衡段值時&#xff0c;值集列表中無法選到需要的平衡段值&#xff0c;進一步對其后臺取值邏輯進行分析 SELECT *FROM (SELECT FLEXVALUES.FLEX_VALUE, FLEXVALUES.DESCRIPTIONFROM FND_FLEX_VALUES_VL FLEXVALUESWHERE FLEXVALUES.FLEX_VALUE_SET_ID :1…

Digimat在電池殼體SMC復合材料成型工藝中的應用

SMC工藝介紹及挑戰 SMC&#xff08;Sheet Molding Compound的縮寫&#xff0c;即片狀模塑料&#xff09;是一種復合材料制造工藝。該工藝可以有效地代替金屬&#xff0c;實現車輛輕量化目標。該工藝不僅能夠顯著降低車身重量&#xff0c;而且設計靈活&#xff0c;操作簡單、易…

社交媒體的探索者:探尋Facebook的發展歷程

在當今數字化時代&#xff0c;社交媒體已經成為了人們日常生活中不可或缺的一部分&#xff0c;而Facebook作為最具影響力的社交平臺之一&#xff0c;其發展歷程承載著無數的探索與創新。本文將深入探討Facebook的發展歷程&#xff0c;從其創立初期到如今的全球化影響&#xff0…

第 8 章 機器人底盤Arduino端電機驅動(自學二刷筆記)

重要參考&#xff1a; 課程鏈接:https://www.bilibili.com/video/BV1Ci4y1L7ZZ 講義鏈接:Introduction Autolabor-ROS機器人入門課程《ROS理論與實踐》零基礎教程 8.4.4 底盤實現_03Arduino端電機驅動 自定義電機驅動的實現與上一節的編碼器驅動流程類似&#xff1a; ROSA…

終于知道公司薪資為什么保密了!無意中拿到了部門薪資列表,自己身為小組長,只有28k,手下好幾個35k左右,心態崩了

大家好&#xff0c;我是瑤琴呀。 一直以來&#xff0c;員工不能私下談論薪資是職場公開的規定&#xff0c;入職的時候&#xff0c;HR 也會要求每個員工在保密薪資文件上簽字。 記得在大學上職業規劃課的時候&#xff0c;當時老師就給我們講過一個案例&#xff0c;公司里小李和…

數據結構與算法學習筆記九---循環隊列的表示和實現(C++)

目錄 前言 1.為什么要使用循環隊列 2.隊列的順序存儲方式的實現 1.定義 2.隊列初始化 3.銷毀 4.清空隊列 5.隊列是否為空 6.隊列長度 7.隊頭 8.入隊 9.出隊 10.遍歷隊列 11.完整代碼 3.參考資料 前言 這篇文章介紹循環隊列的表示和用法。 1.為什么要使用循環隊…