日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

Modern C++ Design 学习笔记-第3章

發(fā)布時(shí)間:2025/7/14 c/c++ 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Modern C++ Design 学习笔记-第3章 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

?

1.Length

template <class T, class U> struct Typelist {typedef T Head;typedef U Tail; }; class NullType {}; template <class TList> struct Length; //特化 template <> struct Length<NullType> {enum { value = 0 }; }; //遞歸式 template <class T, class U> struct Length< Typelist<T, U> > {enum { value = 1 + Length<U>::value }; };#define LOKI_TYPELIST_1(T1) Typelist<T1, NullType>#define LOKI_TYPELIST_2(T1, T2) Typelist<T1, LOKI_TYPELIST_1(T2) >#define LOKI_TYPELIST_3(T1, T2, T3) Typelist<T1, LOKI_TYPELIST_2(T2, T3) >int main() { //3std::size_t n=Length<LOKI_TYPELIST_3(int,int,int)>::value; }

2.typedef typename的定義

見(jiàn)此

template <class TList, unsigned int index> struct TypeAt;template <class Head, class Tail> struct TypeAt<Typelist<Head, Tail>, 0> {typedef Head Result; };template <class Head, class Tail, unsigned int i> struct TypeAt<Typelist<Head, Tail>, i> {typedef typename TypeAt<Tail, i - 1>::Result Result; };

?

http://blog.163.com/cp7618@yeah/blog/static/70234777201122111034365/

http://www.cnblogs.com/carekee/articles/1748675.html

typename告訴編譯器, 后面的消息XXX::type是一個(gè)已經(jīng)存在于某處的類型的名字(type name)

3.TypeAtNonStrict

加了一個(gè)默認(rèn)值DefaultType

template <class TList, unsigned int index,typename DefaultType = NullType> struct TypeAtNonStrict {typedef DefaultType Result; };template <class Head, class Tail, typename DefaultType> struct TypeAtNonStrict<Typelist<Head, Tail>, 0, DefaultType> {typedef Head Result; };template <class Head, class Tail, unsigned int i, typename DefaultType> struct TypeAtNonStrict<Typelist<Head, Tail>, i, DefaultType> {typedef typename TypeAtNonStrict<Tail, i - 1, DefaultType>::Result Result; };

4.IndexOf

也是遞歸式,定義了一個(gè)temp臨時(shí)變量

template <class TList, class T> struct IndexOf;template <class T> struct IndexOf<NullType, T> {enum { value = -1 }; };template <class T, class Tail> struct IndexOf<Typelist<T, Tail>, T> {enum { value = 0 }; };template <class Head, class Tail, class T> struct IndexOf<Typelist<Head, Tail>, T> { private:enum { temp = IndexOf<Tail, T>::value }; public:enum { value = (temp == -1 ? -1 : 1 + temp) }; };

5.Append

?

6.Erase

轉(zhuǎn)載于:https://www.cnblogs.com/Clingingboy/archive/2012/03/09/2387614.html

總結(jié)

以上是生活随笔為你收集整理的Modern C++ Design 学习笔记-第3章的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。