亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++ Template 基礎篇(三):參數魔法

2019-11-06 07:17:15
字體:
來源:轉載
供稿:網友

Template 基礎篇-參數魔法

Template所代表的泛型編程是C++語言中的重要的組成部分,我將通過幾篇blog對這半年以來的學習做一個系統的總結,本文是基礎篇的第三部分。

Template 基礎篇-參數魔法默認實參模板的模板參數非類型參數

除了使用類型作為模板的參數之外,模板參數有更多的用法,以下做個詳細介紹。

默認實參

我們可以通過給模板指定默認實參,為用戶推薦合適的默認設定,讓用戶在只指定部分(或完全不指定)實參的情況下使用模板。

注意:模板的默認實參與函數的默認實參一樣,必須從右向左定義。

在C++98中,只能為類模板指定默認實參。

template<typename T = int, typename U> //error, 必須從右向左struct Wrapper1 { T t;};template<typename T, typename U = int> //okstruct Wrapper2 { T t;};Wrapper2<double> w;template<typename T = int>struct Wrapper3 { T t;};Wrapper3<> w; //w的類型為Wrapper<int>,注意空的<>必須寫上

在C++11中,還可以為函數模板指定默認實參

template<typename T, typename F = std::less<T>> //指定F的默認值是std::less<T>int compare(const T& left, const T& right, F f = F()) { //注意這里,std::less是一個functor if (f(left, right)) { return -1; } if (f(right, left)) { return 1; } return 0;}compare(1, 2); //未指定第三個參數,使用默認值std::less<int>

模板的模板參數

除了內置類型(int float bool等)和自定義類型(class struct)可以作為模板實參之外,C++還允許使用一個模板作為另外一個模板的實參,這使得模板的用戶可以對模板的行為進行深度的定制。例如:指定模板存儲數據使用另外一種STL容器。

聲明模板的模板參數時,必須使用template和class關鍵字,必須使用另外一個模板的完整聲明。

template<typename T, template<typename ELEM> typename CONT> //error,必須使用class關鍵字class ContainerWrapper {public: CONT<T> elems;};template<typename T, template<typename ELEM> class CONT> //okclass ContainerWrapper {public: CONT<T> elems;};ContainerWrapper<int, std::deque> cw; //error,std::deque不匹配//std::deque中除了ELEM之外還有一個有默認值的Alloc參數template<typename T, template<typename ELEM, typename ALLOC = std::allocator<ELEM>> class CONT = std::deque> //兼容STL容器的模板實參,默認為deque,注意template和class兩個關鍵詞class ContainerWrapper {public: CONT<T> elems;};ContainerWrapper<int> cw_default; //使用deque存儲ContainerWrapper<double, std::vector> cw_customized; //指定底層存儲類型為vector

非類型參數

C++模板還支持非類型參數,我們可以在模板定義中使用一個具體類型來指定它們。一個非類型參數可以是一個整形,或者是指針或左值引用。

template<unsigned N, unsigned M> //使用unsigned標記非類型參數int compare(const char (&left) [N], const char (&right) [M]) { return compare(left, right);}compare("hi", "hello"); //推斷出N=3,M=6template<typename T, int N>class WrapperWithNum {public: T t;};WrapperWithNum<int, 1> wwn1;WrapperWithNum<int, 2> wwn2; //注意:雖然兩個模板實例的T都是int,但是因為N不同,所以這是兩個類型

注意:對于含有非類型參數的函數模板,整形推斷的結果必須是一個常量表達式,指針和引用推斷的結果必須指向具有靜態生存周期的對象(static或者全局)或者是nullptr或0。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线观看欧美www| 性视频1819p久久| 秋霞av国产精品一区| 91免费精品视频| 北条麻妃一区二区三区中文字幕| 国产精品一区二区三区免费视频| 国产精品久久电影观看| 日韩电影中文字幕av| 亚洲精品一区二区网址| 亚洲精品国产精品久久清纯直播| 亚洲精品国产欧美| yellow中文字幕久久| 国产精品午夜国产小视频| 九九综合九九综合| 日韩高清电影免费观看完整| 久久久www成人免费精品| 日韩一区二区在线视频| 日韩精品中文字幕在线| 热久久免费国产视频| 国产精品成人一区二区三区吃奶| 欧美日韩在线视频一区| 91精品国产乱码久久久久久蜜臀| 精品女厕一区二区三区| 国产免费亚洲高清| 欧美成人午夜剧场免费观看| 性日韩欧美在线视频| 欧美小视频在线观看| 国产精品久久久久久久久久新婚| 欧美日韩中文字幕在线视频| 91av在线免费观看视频| 国产精品成人av在线| 欧美成人免费网| 亚洲va欧美va在线观看| 久久久久久亚洲精品中文字幕| 日韩av在线影视| 亚洲97在线观看| 国产精品免费网站| 国产性色av一区二区| 国产精品亚发布| 亚洲欧美激情一区| 欧美激情精品久久久久久大尺度| 国产亚洲aⅴaaaaaa毛片| 亚洲第一综合天堂另类专| 久久影院中文字幕| 久久69精品久久久久久久电影好| 91精品国产高清久久久久久久久| 国产精品美女免费视频| 国产精品美女主播在线观看纯欲| 亚洲xxx大片| 亚洲中国色老太| 欧美激情国内偷拍| 中文字幕免费国产精品| 亚洲人成伊人成综合网久久久| 大伊人狠狠躁夜夜躁av一区| 日韩美女av在线免费观看| 日韩视频一区在线| 911国产网站尤物在线观看| 欧美片一区二区三区| 美女扒开尿口让男人操亚洲视频网站| 亚洲国产高清高潮精品美女| 91精品在线国产| 茄子视频成人在线| 亚洲国产精品资源| 久久手机精品视频| 在线观看国产精品日韩av| 亚洲xxxx做受欧美| 欧美电影在线观看网站| 亚洲黄色www网站| 日本一区二区三区在线播放| 日韩中文字幕在线观看| 欧美日韩第一视频| 欧美精品在线极品| 欧美激情国内偷拍| 日韩欧美中文字幕在线观看| 亚洲精品视频网上网址在线观看| 茄子视频成人在线| 中文字幕在线观看日韩| 国产精品久久久久久久久久99| 日韩成人激情视频| 国内精品久久久久伊人av| 欧美最猛黑人xxxx黑人猛叫黄| 最近2019中文字幕mv免费看| 欧美日韩一区免费| 欧美一区二区三区……| 92看片淫黄大片欧美看国产片| 日韩在线观看免费高清完整版| 国产精品天天狠天天看| 精品福利免费观看| 成人夜晚看av| 亚洲电影免费在线观看| 亚洲精品v欧美精品v日韩精品| 91精品国产91久久久| 国产精品爱久久久久久久| 国产亚洲精品一区二区| 青青青国产精品一区二区| 日韩欧美中文在线| 日韩黄色在线免费观看| 91久久久久久久久久久| 亚洲欧美国产精品久久久久久久| 成人在线观看视频网站| 亚洲第五色综合网| 欧美中文字幕第一页| 精品福利视频导航| 欧美另类老肥妇| 日韩亚洲一区二区| 欧美一区二区三区四区在线| 欧美日韩999| 国产亚洲精品一区二区| 国产精品久久99久久| 孩xxxx性bbbb欧美| 亚洲成人黄色网址| 欧美日韩国产精品一区二区不卡中文| 成人伊人精品色xxxx视频| 国产成人精品日本亚洲专区61| 91在线观看免费高清| 国产97在线|亚洲| 久久精品在线播放| 久久精品成人动漫| 九九综合九九综合| 日本一区二区在线播放| 欧美性猛交xxxx免费看| 国产精品va在线播放我和闺蜜| 国产精品极品美女粉嫩高清在线| 亚洲欧洲午夜一线一品| 亚洲国产古装精品网站| 在线看欧美日韩| 热99在线视频| 综合久久五月天| 欧美激情videoshd| 亚洲xxxxx| 亚洲a成v人在线观看| 精品国产乱码久久久久久天美| 日韩在线观看网址| 国产色视频一区| 国产亚洲欧洲高清一区| 欧美影院在线播放| 欧美最猛黑人xxxx黑人猛叫黄| 97国产真实伦对白精彩视频8| 国产精品免费福利| 国产精品久久久久99| 久久亚洲私人国产精品va| 国产亚洲一级高清| 日韩一区二区欧美| 国产成人综合一区二区三区| 91系列在线播放| xvideos亚洲| 亚洲国产精品99| 日韩在线欧美在线国产在线| 亚洲人成自拍网站| 亚洲第一视频网站| 国产精品自产拍在线观看中文| 欧美裸体xxxx| 国产99视频在线观看| 国产视频欧美视频| 欧美色视频日本高清在线观看| 亚洲乱码一区av黑人高潮| 国产精品一区二区久久| 欧美性xxxx18| 亚洲黄页网在线观看| 91中文精品字幕在线视频| 国产精品第一视频| 亚洲黄一区二区| 成人激情电影一区二区| 久久久久久久久亚洲|