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

無我

讓內心永遠燃燒著偉大的光明的精神之火!
靈活的思考,嚴謹的實現
豪邁的氣魄、頑強的意志和周全的思考

【轉】C++中的function object

看過了funciton object中的部分內容,感覺這些技術、 概念等真的需要慢慢體會,才能感受到它的博大精深。

看下面的這個例子:

  #include <iostream>
   #include <vector>
   #include <algorithm>
   using namespace std;
 void printInt (int elem)
   {
       cout << elem << ' ' ;
   }

   int main()
   {
       vector<int> coll;

       //insert elements from 1 to 9
       for (int i=1; i<=9; ++i) {
           coll.push_back(i);
       }

       //print all elements
       for_each (coll.begin(), coll.end(),printInt);            
       cout << endl;
   }

對于這個例子,for_each()的第三個參數,調用了printInt這個函數。在看下面的例子:

#include <iostream>
   #include <vector>
   #include <algorithm>
   using namespace std;

   //simple function object that prints the passed argument
   class PrintInt {
     public:
       void operator() (int elem) const {
           cout << elem << ' ';
       }
   };

   int main()
   {
       vector<int> coll;
       //insert elements from 1 to 9
       for (int i=1; i<=9; ++i) {
           coll.push_back(i);
       }

       //print all elements
       for_each (coll.begin(), coll.end(),    PrintInt()); 

       cout << endl;
   }

在這個例子中,for_each()的第三個參數就是函數對象。

那么這到底有什么區別呢?也許從上面的代碼中還看不出,但是,請繼續看下面的例子:

//對每一個element加10;

void add10 (int& elem)
   {
       elem += 10;
   }

   void fl()
   {
       vector<int> coll;
       ...

       for_each (coll.begin(), coll.end(),   add10);                   
   }
這樣看起來似乎很好,但是,如果突然要求變了,要求對每一個element改成加9;那么,可能想到的辦法是改寫函數

void add9 (int& elem)
   {
       elem +=9;
   }

哦,那么要求又改成+8、+7…… -3等等,總不至于對于每一個都重新寫一個函數吧?雖然可行,但是違背

范型變成的思想。也許有新的辦法:

template <int theValue>
   void add (int& elem)
   {
       elem += theValue;
   }

void f1()
   {
       vector<int> coll;
       ...

       for_each (coll.begin() , coll.end(),     //range
                 add<10>);                      //operation
   }
但是,如果連類型(int)都變了(如改成float),那該怎么實現呢?哦,用一般的函數應該不能實現了吧?

但是如果用function object思想,就可以實現,看下面的代碼:

template <class T>

class AddValue {
      private:
        T theValue;     

       public:
            AddValue(T v) : theValue(v) {
        }

            void operator() (T& elem) const {
            elem += theValue;
        }
   };
現在這個類就可以實現多個類型的相加形式了。

因此可以總結在用函數對象時,可以更加滿足了STL的范型編程思想。

posted on 2007-10-15 10:36 Tim 閱讀(1597) 評論(0)  編輯 收藏 引用 所屬分類: C/C++語言

<2011年7月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

導航

統計

公告

本博客原創文章,歡迎轉載和交流。不過請注明以下信息:
作者:TimWu
郵箱:timfly@yeah.net
來源:m.shnenglu.com/Tim
感謝您對我的支持!

留言簿(9)

隨筆分類(173)

IT

Life

搜索

積分與排名

最新隨筆

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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| 欧美视频在线观看免费网址| 国产精品99免视看9| 国产精品露脸自拍| 国产在线精品自拍| 亚洲欧洲午夜| 亚洲私人影院在线观看| 亚洲欧美视频在线| 久久久综合精品| 欧美二区在线观看| 一区二区欧美国产| 亚洲欧美999| 久久嫩草精品久久久精品| 欧美高清免费| 国产欧美三级| 亚洲欧洲在线一区| 亚洲一区二区三区在线视频| 久久久久久久一区| 欧美激情精品久久久久久久变态| 亚洲精品影视| 久久精品理论片| 欧美日韩亚洲一区二区三区四区 | 亚洲综合三区| 久久久久久久综合| 亚洲国产精品久久久| 亚洲精品一品区二品区三品区| 亚洲午夜视频| 欧美大尺度在线观看| 国产亚洲精品美女| 一本色道久久综合亚洲精品小说 | 最新国产成人av网站网址麻豆| 国产精品99久久不卡二区| 久久精品中文字幕免费mv| 欧美日韩亚洲综合| 亚洲国产精品精华液网站| 欧美一区二区性| 欧美激情在线免费观看| 亚洲午夜精品福利| 欧美理论视频| 尤物精品国产第一福利三区| 欧美一区二区三区四区在线观看| 亚洲国产精品精华液2区45| 欧美亚洲视频在线观看| 欧美午夜视频网站| 亚洲精品一区二区三| 老色批av在线精品| 新狼窝色av性久久久久久| 欧美四级电影网站| 中文av一区二区| 亚洲国产精品久久| 免费在线亚洲| 亚洲国产美女精品久久久久∴| 久久久999| 亚洲尤物在线| 欧美午夜精品一区二区三区| 亚洲乱亚洲高清| 久久婷婷国产综合精品青草| 亚洲视频在线看| 欧美日韩亚洲一区二区三区| 日韩亚洲欧美在线观看| 亚洲人成7777| 欧美理论视频| 99re66热这里只有精品4| 亚洲国产精品va在看黑人| 你懂的视频一区二区| 亚洲国产日韩在线| 亚洲第一精品电影| 欧美久久影院| 亚洲综合好骚| 亚洲一区成人| 狠狠色香婷婷久久亚洲精品| 久久另类ts人妖一区二区| 久久aⅴ国产欧美74aaa| 黄色一区二区在线观看| 欧美激情1区2区3区| 91久久国产精品91久久性色| 久久视频这里只有精品| 精品动漫一区| 女同一区二区| 欧美日韩国产成人在线| 亚洲欧美日韩天堂| 午夜一区二区三视频在线观看| 国产综合第一页| 欧美激情精品久久久久久| 欧美日韩中文| 久久久国产成人精品| 嫩模写真一区二区三区三州| 亚洲综合精品| 免费高清在线一区| 亚洲综合电影| 免费在线看一区| 久久成人免费视频| 欧美国产日本高清在线| 欧美一区二区视频观看视频| 蜜桃av综合| 欧美一区二区在线视频| 欧美一区二区成人6969| 亚洲国产精品久久| 国产日韩亚洲欧美综合| 亚洲第一页自拍| 国产女主播一区| 亚洲精品久久久久久久久久久久久 | av72成人在线| 久久不射2019中文字幕| 一区二区欧美视频| 久久视频免费观看| 欧美怡红院视频| 欧美精品www| 美女在线一区二区| 国产日韩精品视频一区二区三区| 亚洲激情网站| 亚洲成人在线视频播放| 亚洲欧洲99久久| 亚洲一区二区三区三| 欧美国产精品va在线观看| 久热这里只精品99re8久| 欧美性色综合| 日韩一级免费观看| 亚洲人体偷拍| 蜜桃久久av一区| 欧美成年人视频网站欧美| 国产一区二区三区久久久| 亚洲色诱最新| 亚洲图片在区色| 欧美啪啪成人vr| 亚洲国产精品ⅴa在线观看| 在线 亚洲欧美在线综合一区| 午夜欧美不卡精品aaaaa| 性欧美xxxx大乳国产app| 欧美视频在线视频| 一本色道久久综合一区| 亚洲性夜色噜噜噜7777| 欧美日韩综合| 中文精品一区二区三区| 亚洲一区二区毛片| 国产精品国产精品| 亚洲综合欧美| 久久久久成人网| 伊人婷婷久久| 欧美ab在线视频| 亚洲国产清纯| 亚洲天堂av高清| 国产伦精品一区二区| 久久国产黑丝| 欧美成人有码| 一本色道久久综合亚洲精品婷婷 | 91久久久久久久久| 欧美国产一区在线| 99在线精品免费视频九九视| 亚洲在线播放| 国产婷婷色一区二区三区四区| 欧美主播一区二区三区美女 久久精品人 | 亚洲免费伊人电影在线观看av| 日韩视频免费观看| 欧美日韩成人一区二区| 亚洲视频第一页| 久久精品中文字幕免费mv| 一区二区三区中文在线观看 | 免费观看在线综合色| 最新高清无码专区| 欧美亚洲一区二区在线| 黄色成人免费网站| 欧美精品自拍| 校园激情久久| 亚洲欧洲一区二区天堂久久| 午夜在线观看欧美| 在线看不卡av| 国产精品久久一卡二卡| 久久精品一本| 99精品国产福利在线观看免费 | 激情综合色综合久久| 欧美激情第3页| 午夜精品视频在线观看| 亚洲国产日韩一级| 久久九九有精品国产23| 日韩一区二区免费高清| 国产午夜精品一区理论片飘花| 久久午夜影视| 亚洲已满18点击进入久久| 欧美福利一区二区| 欧美一区二区视频观看视频| 日韩午夜免费视频| 狠狠色综合播放一区二区| 欧美视频在线观看 亚洲欧| 久热这里只精品99re8久| 亚洲永久免费精品| 99视频精品在线| 亚洲大片在线观看| 久久久女女女女999久久| 亚洲在线免费| 99视频精品| 亚洲美女av在线播放| 在线电影国产精品| 国产一二三精品| 国产精品中文字幕欧美|