最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解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è)我之前都不知道,我開始學(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)潔并且易讀,大家可能之前也見過(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++異常處理

    深入了解C++異常處理

    任何東西都可以認(rèn)為是異常,錯(cuò)誤只是異常的一種。本文將帶大家了解C++中異常是什么,是如何捕獲和處理的等相關(guān)知識(shí)。文中示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以了解一下
    2021-12-12
  • Qt實(shí)現(xiàn)驗(yàn)證碼相關(guān)功能的代碼示例

    Qt實(shí)現(xiàn)驗(yàn)證碼相關(guān)功能的代碼示例

    驗(yàn)證碼的原理基于人類視覺(jué)和計(jì)算機(jī)視覺(jué)的差異性,通過(guò)給用戶顯示一些難以被機(jī)器識(shí)別的圖形或文字,讓用戶進(jìn)行人機(jī)交互,確認(rèn)自己的身份,這樣可以有效保護(hù)網(wǎng)站安全,所以本給大家介紹了Qt實(shí)現(xiàn)驗(yàn)證碼相關(guān)功能的代碼示例,感興趣的朋友可以參考下
    2024-01-01
  • 利用Matlab實(shí)現(xiàn)陰影柱狀圖的繪制

    利用Matlab實(shí)現(xiàn)陰影柱狀圖的繪制

    陰影柱狀圖繪制的代碼MATHWORKS上也有,不過(guò)是生成圖片后,識(shí)別圖像上不同顏色塊并直接修改像素生成陰影線。這樣的生成方式不可逆且自由度較低,所以本文為大家?guī)?lái)的是一個(gè)直接畫線條填充的硬畫版本,希望有所幫助
    2022-09-09
  • C++之std命名空間

    C++之std命名空間

    這篇文章主要介紹了C++之std命名空間使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • C++日期類(Date)實(shí)現(xiàn)的示例代碼

    C++日期類(Date)實(shí)現(xiàn)的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用C++語(yǔ)言實(shí)現(xiàn)日期類(Date),可以實(shí)現(xiàn)確定某年某月有多少天、打印日期等功能,感興趣的可以了解一下
    2022-07-07
  • 基于C++編寫一個(gè)Json解析器

    基于C++編寫一個(gè)Json解析器

    這篇文章主要為大家詳細(xì)介紹了如何基于C++編寫一個(gè)Json解析器,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以了解一下
    2023-03-03
  • C++中std::transform的使用小結(jié)

    C++中std::transform的使用小結(jié)

    std::transform?是 C++ 標(biāo)準(zhǔn)庫(kù)中的一個(gè)算法,本文主要介紹了C++中std::transform的使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-05-05
  • VC運(yùn)用OPENGL加載BMP紋理圖的實(shí)現(xiàn)方法匯總

    VC運(yùn)用OPENGL加載BMP紋理圖的實(shí)現(xiàn)方法匯總

    這篇文章主要介紹了VC運(yùn)用OPENGL加載BMP紋理圖的實(shí)現(xiàn)方法,對(duì)于更好的了解OpenGL很有幫助,需要的朋友可以參考下
    2014-07-07
  • c++用指針交換數(shù)組的實(shí)例講解

    c++用指針交換數(shù)組的實(shí)例講解

    下面小編就為大家分享一篇c++用指針交換數(shù)組的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • C++實(shí)現(xiàn)快速排序(Quicksort)算法

    C++實(shí)現(xiàn)快速排序(Quicksort)算法

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)快速排序(Quicksort)算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04

最新評(píng)論

文昌市| 浠水县| 固始县| 铜川市| 来安县| 冀州市| 丹寨县| 江都市| 迭部县| 石阡县| 武义县| 二手房| 乐清市| 莆田市| 景谷| 武义县| 调兵山市| 德保县| 永福县| 太保市| 托克逊县| 彩票| 峨边| 遂宁市| 临武县| 林州市| 夏邑县| 河南省| 正镶白旗| 长岭县| 周至县| 浪卡子县| 望谟县| 苏尼特左旗| 宜君县| 安乡县| 诸暨市| 宁乡县| 武宁县| 昌乐县| 卓尼县|