青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

woaidongmao

文章均收錄自他人博客,但不喜標(biāo)題前加-[轉(zhuǎn)貼],因其丑陋,見諒!~
隨筆 - 1469, 文章 - 0, 評(píng)論 - 661, 引用 - 0
數(shù)據(jù)加載中……

C++ Traits

今天看"modern c++ design"的時(shí)候發(fā)現(xiàn)自己竟然又把以前好不容易弄懂的Traits技術(shù)給忘記了,真是...又重新學(xué)習(xí)了一下,趕緊記下來。
Traits
技術(shù)可以用來獲得一個(gè) 類型 的相關(guān)信息的。 首先假如有以下一個(gè)泛型的迭代器類,其中類型參數(shù) T 為迭代器所指向的類型:

template
<typename T>
class myIterator
{
...
};

當(dāng)我們使用myIterator時(shí),怎樣才能獲知它所指向的元素的類型呢?我們可以為這個(gè)類加入一個(gè)內(nèi)嵌類型,像這樣:
template <typename T>
class myIterator
{
      typedef T value_type;
...
};
這樣當(dāng)我們使用myIterator類型時(shí),可以通過 myIterator::value_type來獲得相應(yīng)的myIterator所指向的類型。

現(xiàn)在我們來設(shè)計(jì)一個(gè)算法,使用這個(gè)信息。
template <typename T>
typename
myIterator<T>::value_type Foo(myIterator<T> i)
{
...
}
這里我們定義了一個(gè)函數(shù)Foo,它的返回為為 參數(shù)i 所指向的類型,也就是T,那么我們?yōu)槭裁催€要興師動(dòng)眾的使用那個(gè)value_type呢? 那是因?yàn)椋?dāng)我們希望修改Foo函數(shù),使它能夠適應(yīng)所有類型的迭代器時(shí),我們可以這樣寫:
template <typename I> //
這里的I可以是任意類型的迭代器
typename I::value_type Foo(I i)
{
...
}
現(xiàn)在,任意定義了 value_type內(nèi)嵌類型的迭代器都可以做為Foo的參數(shù)了,并且Foo的返回值的類型將與相應(yīng)迭代器所指的元素的類型一致。至此一切問題似乎都已解決,我們并沒有使用任何特殊的技術(shù)。然而當(dāng)考慮到以下情況時(shí),新的問題便顯現(xiàn)出來了:

原生指針也完全可以做為迭代器來使用,然而我們顯然沒有辦法為原生指針添加一個(gè)value_type的內(nèi)嵌類型,如此一來我們的Foo()函數(shù)就不能適用原生指針了,這不能不說是一大缺憾。那么有什么辦法可以解決這個(gè)問題呢? 此時(shí)便是我們的主角:類型信息榨取機(jī) Traits 登場的時(shí)候了

....drum roll......

我們可以不直接使用myIteratorvalue_type,而是通過另一個(gè)類來把這個(gè)信息提取出來:
template <typename T>
class Traits
{
      typedef typename T::value_type value_type;
};
這樣,我們可以通過 Traits<myIterator>::value_type 來獲得myIteratorvalue_type,于是我們把Foo函數(shù)改寫成:
template <typename I> //
這里的I可以是任意類型的迭代器
typename Traits<I>::value_type Foo(I i)
{
...
}
然而,即使這樣,那個(gè)原生指針的問題仍然沒有解決,因?yàn)?span lang="EN-US">Trait
類一樣沒辦法獲得原生指針的相關(guān)信息。于是我們祭出C++的又一件利器--偏特化(partial specialization)
template <typename T>
class Traits<T*> //
注意 這里針對(duì)原生指針進(jìn)行了偏特化
{
      typedef typename T value_type;
};
通過上面這個(gè) Traits的偏特化版本,我們陳述了這樣一個(gè)事實(shí):一個(gè) T* 類型的指針?biāo)赶虻脑氐念愋蜑?span lang="EN-US"> T。

如此一來,我們的 Foo函數(shù)就完全可以適用于原生指針了。比如:
int * p;
....
int i = Foo(p);
Traits
會(huì)自動(dòng)推導(dǎo)出 p 所指元素的類型為 int,從而Foo正確返回。


............ 終于寫完了,開始寫的時(shí)候沒想到會(huì)寫那么長,暈......

 

posted on 2008-11-08 22:53 肥仔 閱讀(337) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C++ 模板

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久综合伊人77777麻豆| 亚洲一区二区视频在线观看| 久久国产黑丝| 亚洲天堂av高清| 在线一区二区三区四区| 亚洲日本在线观看| 另类成人小视频在线| 免费高清在线一区| 欧美国产精品专区| 欧美国产乱视频| 亚洲精品日韩激情在线电影| 亚洲国产成人高清精品| 99这里只有精品| 香蕉久久夜色精品| 欧美成人精品h版在线观看| 欧美激情视频一区二区三区不卡| 欧美精品粉嫩高潮一区二区| 欧美日韩一区精品| 国产日韩欧美综合在线| 亚洲欧洲偷拍精品| 亚洲一区在线播放| 欧美成人资源| 欧美一区二区精品在线| 欧美国产在线视频| 国产精品地址| 亚洲视频在线观看网站| 久久亚洲国产成人| 亚洲已满18点击进入久久| 美女999久久久精品视频| 欧美日韩亚洲一区| 最近中文字幕日韩精品 | 亚洲国产成人在线视频| av成人毛片| 久久漫画官网| 午夜日韩av| 国产精品你懂得| 欧美一区二区三区喷汁尤物| 亚洲天堂av在线免费| 99在线|亚洲一区二区| 欧美日韩精品免费| 国产精品亚洲一区| 国产精品av久久久久久麻豆网| 久久综合中文字幕| 欧美在线影院| 国产欧美日本一区二区三区| 9l视频自拍蝌蚪9l视频成人| 亚洲精品小视频| 欧美成人亚洲| 亚洲欧洲精品一区二区三区波多野1战4| 亚洲午夜成aⅴ人片| 亚洲自拍三区| 欧美日韩视频专区在线播放| 亚洲欧洲日产国产网站| 亚洲人成在线播放网站岛国| 欧美成人亚洲| 午夜精品久久久久久久久久久久 | 亚洲午夜久久久| 亚洲福利免费| 欧美私人啪啪vps| 亚洲欧美日本在线| 欧美在线视频播放| 亚洲精品国产欧美| 亚洲三级免费电影| 亚洲欧洲一区二区三区在线观看| 一区二区三区精品在线| 国产欧美视频一区二区三区| 亚洲视频免费在线| 国产欧美日韩综合| 亚洲一区二区欧美| 欧美中文在线观看| 国产伦精品一区二区三区视频孕妇| 免费观看在线综合色| 国产精品国产三级国产普通话蜜臀 | 99成人精品| 欧美激情亚洲一区| 美玉足脚交一区二区三区图片| 韩曰欧美视频免费观看| 久久久久久穴| 欧美高清在线视频观看不卡| 亚洲国产一区二区三区在线播| 久久成人18免费观看| 欧美自拍偷拍| 亚洲人成人一区二区三区| 美女国内精品自产拍在线播放| 亚洲第一精品影视| 亚洲视频国产视频| 欧美亚男人的天堂| 欧美一区二区视频在线| 亚洲第一页在线| 亚洲欧美国产制服动漫| 狠狠操狠狠色综合网| 欧美日韩黄色一区二区| 久久免费午夜影院| 亚洲美女色禁图| 国内成人在线| 久久久精品欧美丰满| 国产精品国产三级国产| 你懂的一区二区| 午夜精品福利在线观看| 亚洲日本无吗高清不卡| 国产精品日韩久久久久| 麻豆精品网站| 午夜亚洲伦理| 一区二区三区 在线观看视频| 久久久视频精品| 午夜精品久久久久| 夜夜狂射影院欧美极品| ●精品国产综合乱码久久久久| 国产一区二区av| 国产色视频一区| 国产精品无码永久免费888| 欧美日韩亚洲不卡| 久久久综合视频| 亚洲欧洲99久久| 亚洲女同在线| 欧美一区二区视频在线观看| 香蕉久久国产| 久久精品一区二区| 久久国产一区二区三区| 亚洲一区二区在线免费观看视频 | 亚洲看片网站| 亚洲欧美日韩国产一区| 欧美一级大片在线观看| 在线一区二区视频| 欧美在线日韩在线| 欧美国产日韩一区二区三区| 亚洲国产美女久久久久| 一本久久综合亚洲鲁鲁| 亚洲一二三区在线| 久久天天躁狠狠躁夜夜av| 欧美国产精品久久| 国产美女精品| 国产精品五区| 亚洲国产成人精品视频| 亚洲视频专区在线| 久久亚洲精品视频| 在线性视频日韩欧美| 久久综合九色| 国产精品夜夜夜| 亚洲精品中文字幕在线| 久久久99精品免费观看不卡| 99精品视频免费观看| 久久久久久亚洲精品不卡4k岛国| 欧美日韩一区三区四区| 亚洲精品一区二区在线| 免费欧美视频| 亚洲欧美一区二区在线观看| 欧美成人精品激情在线观看| 国产日韩精品视频一区二区三区| 亚洲精品在线观看视频| 久久―日本道色综合久久| 亚洲欧洲av一区二区| 国产伦精品一区| 久久综合久久综合久久| 欧美成人三级在线| aⅴ色国产欧美| 久久精选视频| 欧美一区二区三区在线观看视频| 久久综合中文| 久久亚洲一区二区| 国内精品免费在线观看| 亚洲午夜免费视频| 亚洲视频在线观看三级| 亚洲一二三四区| 永久91嫩草亚洲精品人人| 欧美激情影院| 国产精品亚洲第一区在线暖暖韩国| 午夜精品视频在线观看一区二区 | 欧美喷水视频| 欧美一进一出视频| 久久久久免费视频| 午夜精品久久久久久久久久久久久| 欧美一级淫片aaaaaaa视频| 亚洲精品视频啊美女在线直播| av不卡免费看| 这里是久久伊人| 亚洲精品国偷自产在线99热| 欧美日韩另类一区| 欧美国产激情| 亚洲人成网在线播放| 亚洲欧美日韩国产另类专区| 韩国美女久久| 欧美国产日韩一区二区| 亚洲高清视频在线观看| 欧美+亚洲+精品+三区| 久久中文久久字幕| 亚洲欧洲日韩在线| 136国产福利精品导航网址| 欧美承认网站| 亚洲一区免费在线观看| 久久米奇亚洲| 亚洲视频大全| 在线播放日韩欧美| 国产精品久久久久久户外露出| 欧美自拍偷拍| 亚洲女女女同性video| 亚洲成人在线视频播放| 亚洲激情精品| 国产酒店精品激情| 欧美精品一区二区三区视频 |