欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解c++11新特性之模板的改進(jìn)

 更新時(shí)間:2020年05月06日 08:36:32   投稿:zx  
這篇文章主要介紹了詳解c++11新特性之模板的改進(jìn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

C++11關(guān)于模板有一些細(xì)節(jié)的改進(jìn):

  • 模板的右尖括號(hào)
  • 模板的別名
  • 函數(shù)模板的默認(rèn)模板參數(shù)

模板的右尖括號(hào)

C++11之前是不允許兩個(gè)右尖括號(hào)出現(xiàn)的,會(huì)被認(rèn)為是右移操作符,所以需要中間加個(gè)空格進(jìn)行分割,避免發(fā)生編譯錯(cuò)誤。

int main() {
  std::vector<std::vector<int>> a; // error
  std::vector<std::vector<int> > b; // ok
}

這個(gè)我之前都不知道,我開(kāi)始學(xué)編程的時(shí)候就已經(jīng)是C++11的時(shí)代啦。

模板的別名

C++11引入了using,可以輕松的定義別名,而不是使用繁瑣的typedef。

typedef std::vector<std::vector<int>> vvi; // before c++11
using vvi = std::vector<std::vector<int>>; // c++11

使用using明顯簡(jiǎn)潔并且易讀,大家可能之前也見(jiàn)過(guò)使用typedef定義函數(shù)指針之類的操作,那爛代碼我就不列出來(lái)了,反正我是看不懂也不想看...以后都可以使用using,額還是列出來(lái)吧。

typedef void (*func)(int, int); // 啥玩意,看不懂
using func = void (*)(int, int); // 起碼比typedef容易看的懂吧

上面的代碼使用using起碼比typedef容易看的懂一些吧,但是我還是看不懂,因?yàn)槲覐膩?lái)不用這種來(lái)表示函數(shù)指針,用std::function()、std::bind()、std::placeholder()、lambda表達(dá)式它不香嗎。

函數(shù)模板的默認(rèn)模板參數(shù)

C++11之前只有類模板支持默認(rèn)模板參數(shù),函數(shù)模板是不支持默認(rèn)模板參數(shù)的,C++11后都支持。

template <typename T, typename U=int>
class A {
   T value; 
};

template <typename T=int, typename U> // error
class A {
   T value; 
};

類模板的默認(rèn)模板參數(shù)必須從右往左定義,而函數(shù)模板則沒(méi)有這個(gè)限制。

template <typename R, typename U=int>
R func1(U val) {
  return val;
}

template <typename R=int, typename U>
R func2(U val) {
  return val;
}

int main() {
  cout << func1<int, double>(99.9) << endl; // 99
  cout << func1<double, double>(99.9) << endl; // 99.9
  cout << func1<double>(99.9) << endl; // 99.9
  cout << func1<int>(99.9) << endl; // 99
  cout << func2<int, double>(99.9) << endl; // 99
  cout << func1<double, double>(99.9) << endl; // 99.9
  cout << func2<double>(99.9) << endl; // 99.9
  cout << func2<int>(99.9) << endl; // 99
  return 0;
}

對(duì)于函數(shù)模板,參數(shù)的填充順序是從左到右的。

關(guān)于C++11對(duì)于模板的改進(jìn)就講到這里,請(qǐng)繼續(xù)關(guān)注~

參考資料

《深入應(yīng)用C++11:代碼優(yōu)化與工程級(jí)應(yīng)用》

https://blog.csdn.net/tennysonsky/article/details/77817027

https://blog.csdn.net/wf19930209/article/details/79309881?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaidu-1&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaidu-1

到此這篇關(guān)于c++11新特性之模板的改進(jìn)的文章就介紹到這了,更多相關(guān)c++11新特性之模板的改進(jìn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語(yǔ)言實(shí)現(xiàn)系統(tǒng)關(guān)機(jī)注銷功能

    C語(yǔ)言實(shí)現(xiàn)系統(tǒng)關(guān)機(jī)注銷功能

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)系統(tǒng)關(guān)機(jī)注銷功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • 簡(jiǎn)單談?wù)凜++中指針與引用的區(qū)別

    簡(jiǎn)單談?wù)凜++中指針與引用的區(qū)別

    指針和引用在C++中很常用,但是對(duì)于它們之間的區(qū)別很多初學(xué)者都不是太熟悉,下面來(lái)談?wù)勊麄?者之間的區(qū)別和用法
    2017-04-04
  • C++中線性代數(shù)計(jì)算Eigen庫(kù)的使用教程詳解

    C++中線性代數(shù)計(jì)算Eigen庫(kù)的使用教程詳解

    Eigen是一個(gè)基于線性代數(shù)的C++模板庫(kù),主要用于矩陣、向量、數(shù)值求解和相關(guān)算法,本文主要為大家簡(jiǎn)單聊聊Eigen庫(kù)的使用,希望對(duì)大家有所幫助
    2023-12-12
  • C++紅黑樹(shù)應(yīng)用之手搓set和map

    C++紅黑樹(shù)應(yīng)用之手搓set和map

    這篇文章主要為大家詳細(xì)介紹了如何使用紅黑樹(shù)封裝set和map,且必須保證兩種數(shù)據(jù)結(jié)構(gòu)復(fù)用同一棵紅黑樹(shù),且滿足set和map的性質(zhì),set的value不可被改變,而map的value可以被改變,需要的可以參考一下
    2023-03-03
  • C++之openFrameworks框架介紹

    C++之openFrameworks框架介紹

    本章我們將介紹一個(gè)非常好用的跨平臺(tái)的 C++開(kāi)源框架 openFrameworks。它是一個(gè)開(kāi)源的跨平臺(tái)的C++工具包,方便開(kāi)發(fā)者創(chuàng)建出一個(gè)更簡(jiǎn)單和直觀的框架,擅長(zhǎng)開(kāi)發(fā)圖像和動(dòng)畫(huà),感興趣的同學(xué)可以參考一下
    2023-05-05
  • 探討數(shù)組與字符串輸入的問(wèn)題(C++版)

    探討數(shù)組與字符串輸入的問(wèn)題(C++版)

    本文對(duì)C++數(shù)組與字符串輸入的問(wèn)題進(jìn)行了探討,需要的朋友可以參考下
    2015-07-07
  • LeetCode 單調(diào)棧內(nèi)容小結(jié)

    LeetCode 單調(diào)棧內(nèi)容小結(jié)

    這篇文章主要介紹了LeetCode 單調(diào)棧內(nèi)容小結(jié),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C語(yǔ)言詳解如何實(shí)現(xiàn)堆及堆的結(jié)構(gòu)與接口

    C語(yǔ)言詳解如何實(shí)現(xiàn)堆及堆的結(jié)構(gòu)與接口

    堆是計(jì)算機(jī)科學(xué)中一類特殊的數(shù)據(jù)結(jié)構(gòu)的統(tǒng)稱,通常是一個(gè)可以被看做一棵完全二叉樹(shù)的數(shù)組對(duì)象。而堆排序是利用堆這種數(shù)據(jù)結(jié)構(gòu)所設(shè)計(jì)的一種排序算法。本文將詳細(xì)介紹堆的結(jié)構(gòu)與接口,需要的可以參考一下
    2022-04-04
  • 淺談do {...} while (0) 在宏定義中的作用

    淺談do {...} while (0) 在宏定義中的作用

    下面小編就為大家?guī)?lái)一篇淺談do {...} while (0) 在宏定義中的作用。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-12-12
  • C++?TCP網(wǎng)絡(luò)編程詳細(xì)講解

    C++?TCP網(wǎng)絡(luò)編程詳細(xì)講解

    TCP/IP是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,它會(huì)保證數(shù)據(jù)不丟包、不亂序。TCP全名是Transmission?Control?Protocol,它是位于網(wǎng)絡(luò)OSI模型中的第四層
    2022-09-09

最新評(píng)論