C++11程式設計要點總結-模板機制詳解

来源:https://www.cnblogs.com/XdAdmin/archive/2019/01/05/10225493.html
-Advertisement-
Play Games

C++程式設計要點總結 在編程的過程中呢我們總會遇到一些各種各樣的問題,就比如在寫方法的時候,我們一個同樣的方法要寫好幾種類型的呢,這讓我們很傷腦筋,但是呢C++有一個強大的功能就是模板機制,這個模板機制就可以讓我們少寫很多同樣的代碼,那麼什麼是模板呢,。我們舉一個小例子吧!比如我們要去寫交換函數, ...


C++程式設計要點總結

在編程的過程中呢我們總會遇到一些各種各樣的問題,就比如在寫方法的時候,我們一個同樣的方法要寫好幾種類型的呢,這讓我們很傷腦筋,但是呢C++有一個強大的功能就是模板機制,這個模板機制就可以讓我們少寫很多同樣的代碼,那麼什麼是模板呢,。我們舉一個小例子吧!比如我們要去寫交換函數,那麼我們正常的寫法是

1 void swap(int&a,int&b)
2 {
3       int temp=a;
4       a=b;
5       b=temp;
6 }

 

這樣寫大家都可以看懂,但是卻有一個問題,我們現在寫的只是交換int類型的值那麼這樣寫很簡單麽,那麼我們如果要交換一個double類型的值呢,我們在寫一個double類型的swap函數麽。

1 void swap(double&a,double&b)
2 {
3       double temp=a;
4       a=b;
5       b=temp;
6 }

這樣寫的話太麻煩了,如果我在想交換一個float類型的呢,char類型的呢,難道我要一個一個定義麽,這個時候我們模板的作用就體現出來了。
既然要講模板那麼我們首先講的是模板怎麼定義模板的定義其實很簡單,就像變數的定義方法一樣,但是和變數不同的是他是在<中定義的>廢話不多說我們來看看案例吧!

1.template<typename name> //這是第一種的定義方法
2.template<class name> //這是第二種的定義方法

那麼上面這兩種有什麼區別呢,我給你們簡單的概括一下,這裡面的class是可以變成任何類型,就比如說我們自己定義的類結構體共同體等等等等,typename就是基本數據類型,那麼什麼是基本數據類型呢,就是我們的int,char,string既然講到這裡了,那麼我們寫一個案例吧!

1 template<typename type>
2 void swap(type&a,type&b)
3 {
4     type temp=a;
5     a=b;
6     b=temp;
7 }

既然講完了定義那麼定義後的這個方法怎麼使用呢,其實使用起來也是很簡單的,和正常函數一樣傳參就好了,他會自己去匹配

1 int a = 10, b = 100;
2 swap(a,b);
3 cout << a << "\t"<<b << endl;

ps:使用必看

1.如果只有一個像上面的type那個swap一樣的話那麼你要註意一點,就是a和b的類型必須一樣,不然他不知道識別什麼。
2.使用模板的時候我們並不是一成不變的只能定義一個,其實我們可以像定義變數一樣的定義它,使用逗號隔開即可。

進入我的CSDN博客

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Python的基本數據類型有數字(Number),字元串(string),列表(List)、集合(Set),元組(Tuple)和字典(Dictionary)。 數字:1.包括了整型、浮點型和布爾型,還加入了複數(int、float、bool、complex); 2.若是想知道它具體是什麼類型,可以調 ...
  • [原創]使用python對視頻/音頻文件進行詳細信息採集,併進行去重操作 轉載請註明出處 一.關於為什麼用pymediainfo以及pymediainfo的安裝 使用python對視頻/音頻文件進行詳細信息採集,併進行去重操作的核心是使用pymediainfo這個庫 之前本人一直在試著用moviep ...
  • 題意 "題目鏈接" Sol 設$f[i]$表示炸彈到達$i$這個點的概率,轉移的時候考慮從哪個點轉移而來 $f[i] = \sum_{\frac{f(j) (1 \frac{p}{q})}{deg(j)}}$ $f[1]$需要+1(炸彈一開始在1) cpp // luogu judger enabl ...
  • 字典dict字典是由大括弧{鍵:值}組成.字典是無序的.字典的鍵是不可變的,不能使用列表作為鍵.但可以使用元祖作為字典的鍵.例如: 新增 setdefault(鍵,值):如果只寫鍵不寫值將列印該鍵所對應的值,如果沒有找到鍵返回Note fromkeys(字典鍵列表,值):如果值是列表,是可變的那麼如 ...
  • 引言 - 背景 2016 年寫過一篇關於 linux 共用記憶體 shm api 掃盲文. C擴展 從共用記憶體shm到memcache外部記憶體 比較簡單. 沒有深入分析(能力有限, 也深入分析不了). 3年(2019)過去了. 本質而言共用記憶體這種編程活化石般 雙刃劍, 像 "redis" 這種分散式 ...
  • 在寫高併發交易代碼時要謹慎使用strncpy和sprintf 原因及建議實踐 ...
  • 1. 下載 下載地址,選擇穩定的版本,比如3.4.13,beta為在測版本 2. 複製到任意的目錄,解壓 3. 修改配置文件 配置文件位於conf目錄下,原配置文件為zoo_sample.cfg,更改為zoo.cfg才能被識別。 在配置文件末尾加上 : server.1=bogon:2888:388 ...
  • \動作標簽實例 之後補齊基礎知識 1. scope屬性 該屬性指定了所創建Bean實例的存取範圍,省略該屬性時的值為page.\標識被執行時,首先會在scope屬性指定的範圍來查找指定的Bean實例,如果該實例已經存在,則引用這個Bean,否則重新創建,並將其存儲在scope屬性指定的範圍內。 sc ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...