• <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>

            woaidongmao

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

            模板參數(shù)名命名慣例

            模板參數(shù)名命名慣例

            以下模板參數(shù)名命名慣例來自于stlsoft,詳細(xì)說明于《Extended STL》。

            模板參數(shù)一般是一個(gè)或者兩個(gè)大寫字母,
            例如T(type/value-type)、S(sequence/string)、
            C(container/character)、VP(value policy type)等等。

            這樣做有兩個(gè)原因。

            首先,全大寫字母的單詞可能被宏定義。
            相反,宏定義一般不會(huì)僅有一個(gè)或兩個(gè)字符。
            所以模板參數(shù)和宏定義沒有命名沖突。

            (我們不應(yīng)該自定義特別短的宏。
            如果一個(gè)庫定義了一兩個(gè)字符的短宏,
            一般來說,它絕不會(huì)是一個(gè)可靠的庫。)

            第二,我們將在類中定義成員類型,其名字必須不同于模板參數(shù)名。

            以下代碼中,成員類型和模板參數(shù)同名,無法通過編譯:

            template <typename iterator>
            struct thing
            {
                typedef iterator iterator; // Compile error
            };

            必須如下代碼更改:

            template <typename I>
            struct thing
            {
                typedef I iterator;
            };

            在定義模板類時(shí),有一個(gè)慣例,
            即一開始就以上面短小的模板參數(shù)名為基礎(chǔ),
            定義各個(gè)成員類型。


            查看StlPort代碼:

            template <class _Key, class _Tp, ...>
            class map
            {
              typedef map<_Key, _Tp, _Compare, _Alloc> _Self;
            public:
              typedef _Key                  key_type;
              typedef _Tp                   data_type;
              typedef _Tp                   mapped_type;
              typedef pair<const _Key, _Tp> value_type;
              typedef _Compare              key_compare;

              ...
            }

            其模板參數(shù)命名的原則是一致的:較短,然后立即定義較長的類型名。
            用前導(dǎo)下劃線防止命名沖突。

            (轉(zhuǎn)載請注明來源于金慶的專欄)
            posted on 2008-04-21 17:25 金慶 閱讀(1380) 評(píng)論(10)  編輯 收藏 引用 所屬分類: 1. C/C++

            評(píng)論

            # re: 模板參數(shù)名命名慣例 2008-04-21 19:34 踏雪赤兔
            沒必要為你那些過時(shí)的宏定義搞成這樣吧,這樣嚴(yán)重地?fù)p害了代碼可讀性。
            P.S.:與其參考stlsoft,還不如參考SGI STL更好吧,這也是侯捷的選擇  回復(fù)  更多評(píng)論
             

            # re: 模板參數(shù)名命名慣例 2008-04-21 19:56 王曉軒
            同意樓上的,SGI 的STL實(shí)現(xiàn)可以說是可讀性最好的~~
              回復(fù)  更多評(píng)論
             

            # re: 模板參數(shù)名命名慣例 2008-04-21 22:12 Wang Feng
            說起宏定義,其實(shí)在文件前面定義,用完了之后在文件最后取消是個(gè)很好的習(xí)慣
            比如

            #define PI 3.1415926535897932384626433
            .....

            #undef PI  回復(fù)  更多評(píng)論
             

            # re: 模板參數(shù)名命名慣例 2008-04-22 08:38 Kevin Lynx
            原來模板中會(huì)優(yōu)先使用宏。

            說實(shí)話,作為開源fans,我有點(diǎn)看不慣“(轉(zhuǎn)載請注明來源于金慶的專欄)”這句話。個(gè)人感受。  回復(fù)  更多評(píng)論
             

            # re: 模板參數(shù)名命名慣例 2008-04-22 09:38 金慶
            @踏雪赤兔
            SGI STL與StlPort的代碼是很相似的,如上述map的定義幾乎一樣,只是stlport多了些對平臺(tái)的判斷,移植性好點(diǎn)。應(yīng)該不算“嚴(yán)重地?fù)p害了代碼可讀性”。  回復(fù)  更多評(píng)論
             

            # re: 模板參數(shù)名命名慣例 2008-04-22 09:43 金慶
            @Wang Feng
            取消宏定義是一種方法,這樣該宏只能用于當(dāng)前文件。  回復(fù)  更多評(píng)論
             

            # re: 模板參數(shù)名命名慣例 2008-04-22 09:52 金慶
            @Kevin Lynx
            我的觀點(diǎn)是,開源需要亮出自己的名號(hào).
            "轉(zhuǎn)載請注明來源于金慶的專欄"是為了方便讀者找到原文出處.  回復(fù)  更多評(píng)論
             

            # re: 模板參數(shù)名命名慣例 2008-04-22 13:19 eXile
            我覺得作為開源的fans,應(yīng)該更加注重版權(quán)的意識(shí)。  回復(fù)  更多評(píng)論
             

            # re: 模板參數(shù)名命名慣例 2008-04-23 09:08 Kevin Lynx
            @金慶
            這樣的話我還是很贊同的。  回復(fù)  更多評(píng)論
             

            # re: 模板參數(shù)名命名慣例 2008-04-25 17:22 #Ant
            SGI STL的可讀性還是最好的,Wang Feng說的那種宏定義方法也是boost庫里面經(jīng)常用的。  回復(fù)  更多評(píng)論

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

            色综合合久久天天综合绕视看| 国产—久久香蕉国产线看观看| 天堂久久天堂AV色综合| 久久久精品人妻一区二区三区四| 99久久免费国产精精品| 久久久久久国产a免费观看黄色大片 | 久久久久香蕉视频| 亚洲乱码精品久久久久..| 国产福利电影一区二区三区久久老子无码午夜伦不 | yy6080久久| 亚洲天堂久久精品| 精品多毛少妇人妻AV免费久久| 国产精品国色综合久久| 偷偷做久久久久网站| 狠狠色综合久久久久尤物| 久久天天躁狠狠躁夜夜躁2O2O| 久久久久亚洲AV成人网人人网站| 国产高潮国产高潮久久久| 精产国品久久一二三产区区别| 国产精品日韩深夜福利久久| 久久综合香蕉国产蜜臀AV| 一本大道久久香蕉成人网| 午夜不卡888久久| 国产精品岛国久久久久| 亚洲精品乱码久久久久久自慰| 无码任你躁久久久久久老妇| 国产精品免费久久久久影院| 国产精品99久久精品| 久久久av波多野一区二区| 亚洲AV无码久久精品色欲| 久久亚洲精品无码aⅴ大香 | 久久国产精品99久久久久久老狼| 亚洲狠狠婷婷综合久久蜜芽| 亚洲欧洲久久av| 色青青草原桃花久久综合| 色婷婷综合久久久久中文字幕| 久久精品无码一区二区三区免费 | 国产欧美久久一区二区| 久久人人爽人人爽人人片AV不| 亚洲AV日韩精品久久久久久| 亚洲欧美日韩久久精品第一区|