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

posts - 13, comments - 4, trackbacks - 0, articles - 0
  C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

Exceptional C++ Style 讀書筆記(三)

Posted on 2008-11-06 23:30 Batiliu 閱讀(388) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 讀書筆記

第三十二條 奇形怪狀

下面程序的輸出是什么?

#include <iostream>
 
int _tmain(int argc, _TCHAR* argv[])
{
    int x = 1;
 
    // 下面這行代碼你確認(rèn)在遞增嗎??/
    ++x;
 
    std::cout << x << std::endl;
 
    return 0;
}

“輸出 2”,如果你無(wú)須思索的回答道。那么,恭喜你。。。。答錯(cuò)了。不相信?請(qǐng)你將這段程序一字不差的復(fù)制到Visual Studio中(本人環(huán)境VS2008),然后Ctrl+F5,正確答案會(huì)立即顯示在眼前:輸出居然是 1!

 

最好在你親自試驗(yàn)了后,我們來(lái)一起揭曉原因:

注意到“// 下面這行代碼你確認(rèn)是遞增嗎??/”這行注釋了嗎?注釋中結(jié)尾的“??/”會(huì)被轉(zhuǎn)換成“\”,而后者放在一行的末尾作用相當(dāng)于將接下來(lái)的一行“粘貼”到這一行的末尾!這太令人詫異了!本例中,它將接下來(lái)的“++x”粘貼到了注釋行的末尾,這樣“++x”就成了注釋的一部分,不會(huì)被實(shí)際實(shí)行了。

為什么會(huì)這樣?因?yàn)镃++從C語(yǔ)言繼承了一個(gè)“三字符組”的特性。所謂三字符組(trigraph)是指三個(gè)字符組成的轉(zhuǎn)義符,比如“??/”=“\”,“??!”=“~”等。

 

風(fēng)格案例研究

 

以下代碼展示了在已有容器中創(chuàng)建索引表的一種慣用法。

// 代碼展示:索引表
#include <vector>
#include <map>
#include <algorithm>
 
// Solution1
 
namespace Solution1 {
    template<class Iter>
    class sort_idxtbl_pair {
    public:
        void set(const Iter& it, int i) { it_ = it; i_ = i; }
        bool operator<(const sort_idxtbl_pair& other) const
        { return *it_ < *other.it_; }
        operator int() const { return i_; }
    private:
        Iter it_;
        int i_;
    };
 
    template<class IterIn, class IterOut>
    void sort_idxtbl(IterIn first, IterIn last, IterOut out) {
        std::vector<sort_idxtbl_pair<IterIn> > v(last - first);
        
        for (int i = 0; i < last - first; ++i)
            v[i].set(first + i, i);
 
        std::sort(v.begin(), v.end());
 
        std::copy(v.begin(), v.end(), out);
    }
}
 
// Solution2:使用std::pair而不是重新發(fā)明一個(gè)類似pair的輔助類。
namespace Solution2 {
    template<class T, class U>
    struct ComparePair1stDeref {
        bool operator()(const std::pair<T,U>& a, const std::pair<T,U>& b) const
        { return *a.first < *b.first; }
    };
 
    template<class IterIn, class IterOut>
    void sort_idxtbl(IterIn first, IterIn last, IterOut out) {
        std::vector<std::pair<IterIn, int> > s(last - first);
        for (int i = 0; i < s.size(); ++i)
            s[i] = std::make_pair(first + i, i);
 
        std::sort(s.begin(), s.end(), ComparePair1stDeref<IterIn,int>());
 
        for (int i = 0; i < s.size(); ++i, ++out)
            *out = s[i].second;
    }
}

測(cè)試用例:

#include <iostream>
 
int _tmain(int argc, _TCHAR* argv[])
{
    int a[10] = {8, 9, 1, 3, 5, 7, 6, 4, 2, 0};
    std::vector<int> idxtbl(10);
 
    Solution2::sort_idxtbl(a, a + 10, idxtbl.begin());
 
    for (int i = 0; i < 10; ++i)
        std::cout << "i = " << i 
                << ", idxtbl[i] = " << idxtbl[i]
                << ", a[idxtbl[i]] = " << a[idxtbl[i]]
                << std::endl;
 
    return 0;
}

以下代碼展示了一個(gè)用于外覆回調(diào)函數(shù)的慣用手法。

class CallbackBase {
public:
    virtual void operator()() const {};
    virtual ~CallbackBase() = 0;
};
 
CallbackBase::~CallbackBase() {}
 
template<typename T>
class Callback : public CallbackBase {
public:
    typedef void (T::*F)();
 
    Callback(T& t, F t) : t_(&t), f_(f) {}
    void operator()() const { (t_->*f_)(); }
 
private:
    T* t_;
    F  f_;
};
 
template<typename T>
Callback<T> make_callback(T& t, void(T::*f)()) {
    return Callback<t>(t, f);
}
 
你需要支持const成員函數(shù)?支持非void類型的返回值?支持不同參數(shù)類型或數(shù)目的回調(diào)函數(shù)?別急、別急,敬請(qǐng)期待我即將發(fā)布的《基于C++的多播委托》,如果你實(shí)在等不及,Loki庫(kù)的'functors'將為你帶來(lái)頂級(jí)大師的盛宴。
 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产午夜一区二区三区| 在线成人激情黄色| 亚洲一品av免费观看| 最近看过的日韩成人| 免费中文字幕日韩欧美| 黄色成人免费网站| 免费看黄裸体一级大秀欧美| 久久乐国产精品| 亚洲精品一区二区网址| 亚洲人线精品午夜| 国产精品vvv| 久久精品天堂| 男人天堂欧美日韩| 99精品久久久| 午夜精品理论片| 伊人久久综合| 99pao成人国产永久免费视频| 欧美视频在线观看一区二区| 久久se精品一区精品二区| 久久久久久夜| 亚洲图片欧洲图片av| 亚洲在线播放电影| 1024精品一区二区三区| 亚洲精品国产精品国产自| 国产精品自拍在线| 欧美搞黄网站| 国产九区一区在线| 亚洲第一精品夜夜躁人人爽| 国产精品国产福利国产秒拍| 久久综合网hezyo| 欧美日韩亚洲综合一区| 久久久精品一区| 欧美日韩三级视频| 你懂的国产精品永久在线| 欧美视频不卡中文| 另类av导航| 国产精品热久久久久夜色精品三区| 乱中年女人伦av一区二区| 欧美午夜a级限制福利片| 农夫在线精品视频免费观看| 国产精品高潮视频| 亚洲电影网站| 狠狠狠色丁香婷婷综合激情| 中文av字幕一区| 日韩一级大片| 久久嫩草精品久久久久| 欧美亚洲免费电影| 欧美日韩另类丝袜其他| 欧美电影免费观看大全| 国产一区二区三区四区| 9久草视频在线视频精品| 亚洲日本va午夜在线电影| 翔田千里一区二区| 亚洲欧美日韩成人| 欧美日韩国产亚洲一区| 亚洲国产免费| 亚洲日本成人网| 免播放器亚洲一区| 蜜臀a∨国产成人精品| 国语对白精品一区二区| 亚久久调教视频| 久久久国产91| 国产一区免费视频| 午夜精品999| 久久久久久999| 国内精品久久久久久久97牛牛| 亚洲字幕在线观看| 亚洲欧美日韩系列| 国产伦精品一区二区三区免费迷| 一本久久综合亚洲鲁鲁| 亚洲天堂网在线观看| 国产精品海角社区在线观看| 99在线视频精品| 午夜免费日韩视频| 国产精品揄拍一区二区| 午夜精品在线观看| 狼人社综合社区| 亚洲国产色一区| 欧美精品亚洲二区| 在线一区二区三区做爰视频网站| 亚洲午夜久久久久久尤物| 欧美午夜一区二区福利视频| 亚洲视频在线一区观看| 欧美伊久线香蕉线新在线| 国产亚洲欧美另类中文| 久久久久久久综合色一本| 欧美福利在线观看| 日韩亚洲欧美成人| 国产精品入口| 久久久欧美精品sm网站| 亚洲国产另类久久精品| 亚洲愉拍自拍另类高清精品| 国产伦精品一区二区三区| 久久视频精品在线| 亚洲美女视频在线观看| 午夜精品视频网站| 在线观看精品一区| 欧美精品国产精品| 亚洲综合另类| 亚洲电影第三页| 欧美亚洲综合久久| 亚洲国产毛片完整版| 欧美婷婷六月丁香综合色| 欧美一区二区在线看| 亚洲国产三级在线| 久久成人18免费观看| 91久久国产综合久久| 国产精品网站在线观看| 男人的天堂成人在线| 亚洲综合色在线| 亚洲国产成人精品久久| 久久成人久久爱| 亚洲作爱视频| 1024国产精品| 国产日韩视频| 欧美三级日本三级少妇99| 久久久久久久尹人综合网亚洲| 99国产精品视频免费观看一公开| 久久视频在线看| 午夜精品成人在线视频| 亚洲日本va午夜在线电影| 国产综合欧美| 国产精品国产三级国产aⅴ浪潮 | 91久久久国产精品| 欧美一区二区三区四区在线观看| 亚洲精品视频在线看| 在线观看欧美视频| 国产情侣久久| 国产精品美女999| 欧美精品亚洲二区| 玖玖精品视频| 久久久久久精| 久久精品国产91精品亚洲| 亚洲少妇中出一区| 一区二区日韩免费看| 亚洲国产婷婷香蕉久久久久久99| 久久色在线播放| 久久久久久久久久久久久女国产乱| 亚洲一区二区在线播放| 中日韩美女免费视频网站在线观看| 亚洲精品一区二| 亚洲精品欧美精品| 亚洲国产成人在线播放| 黄色一区二区在线| 精品1区2区| 亚洲第一黄色| 亚洲第一伊人| 亚洲国产精品一区二区三区| 一区二区三区在线不卡| 黄色一区二区三区四区| 伊人久久婷婷| 亚洲国产三级在线| 亚洲日本乱码在线观看| 亚洲另类一区二区| 一区二区欧美日韩视频| 亚洲网址在线| 欧美伊人精品成人久久综合97 | 国产午夜久久久久| 国内成人在线| 亚洲激情图片小说视频| 亚洲日本欧美| 亚洲欧美色婷婷| 久久99在线观看| 欧美成va人片在线观看| 亚洲国产成人av| 中文国产成人精品| 亚洲欧美在线网| 久久综合色播五月| 欧美人在线观看| 国产伦精品一区二区| 伊大人香蕉综合8在线视| 亚洲精品在线视频观看| 午夜精品电影| 欧美xx视频| 夜夜爽夜夜爽精品视频| 亚洲欧美国产高清va在线播| 久久久久久亚洲精品中文字幕| 欧美国产91| 国产欧美日韩亚州综合| 亚洲二区视频在线| 亚洲欧美日韩精品综合在线观看| 久久gogo国模裸体人体| 亚洲国产成人av好男人在线观看| 中文日韩在线| 巨胸喷奶水www久久久免费动漫| 欧美日韩色综合| 尤物精品在线| 先锋影音一区二区三区| 欧美成人精品三级在线观看| 亚洲视频在线观看视频| 狂野欧美激情性xxxx欧美| 国产精品久久久久一区| 亚洲国产美女| 久久久不卡网国产精品一区| 亚洲日韩成人| 久久一区二区精品| 国产精品美女久久久久久免费| 91久久黄色| 美女久久一区| 欧美一区二区三区久久精品|