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

遍歷某些數據是我們經常遇到的問題, 下面簡單總結一下各種數據遍歷的方法:

(1)First,Next方法
void FirstNextTest()
{
    char string[] = "A string\tof ,,tokens\nand some  more tokens";
    char seps[]   = " ,\t\n";
    char *token;
    token = strtok( string, seps ); 
    while( token != NULL )
    {
        cout << token << endl;
        token = strtok( NULL, seps ); 
    }

    cout << endl;
}
這種遍歷方式實際上就是有一個GetFirst方法,如果GetFirst成功, 接下來就可以不斷地GetNext遍歷。
上面的  strtok( string, seps )實際上就是GetFirst,  strtok( NULL, seps )實際上就是GetNext。
類似的還有Windows API,如 FindFirstFile, FindNextFile等。

(2)Callback遍歷方法
該方式通過讓我們在開始遍歷時設置一個callback函數, 當找到符合條件的數據時, 通過調用我們設置的callback把數據發回來。
典型例子是Windows枚舉窗口的API: 
typedef BOOL (CALLBACK* WNDENUMPROC)(HWND, LPARAM);
BOOL EnumWindows(  WNDENUMPROC lpEnumFunc, LPARAM lParam );

(3)Index遍歷方法
該方法通過暴露2個API來實現,GetCount和GetItemByIndex,前者返回總的數量,后者根據索引返回某個Item。
我們通常實現的operator[](int nIndex)實際也是這種方法。

(4)COM里IEnum方法
IEnum接口包含4個方法:
HRESULT Reset();  //重置到起始狀態
HRESULT Next(ULONG celt, XXX* ppGet, ULONG* fetched); //嘗試去取celt個元素
HRESULT Skip(ULONG celt); //跳過下面的celt個元素
HRESULT Clone(IEnumXXX** ppEnum); //克隆一個當前狀態的Enum接口
應該說IEnum接口對于我們的遍歷需求來說,它很完整也很強大。

(5)C#里的IEnumerable和IEnumerator方法
如果一個類支持枚舉,它會實現IEnumerable接口, IEnumerable接口就一個簡單的方法: IEnumerator GetEnumerator()
IEnumerator接口包含3個方法:
void Reset(); //重置
Object Current(); //取得當前對象
bool MoveNext(); //指向下一個對象,如果沒有下一個對象,返回False
可以看到C#的接口和COM的IEnum接口其實很類似。

(6)Iterator方法
這是STL的推薦方法, 我們知道Iterator在STL是容器和算法的粘合劑, 也是讓算法獨立于容器的隔離層。
我們可以通過STL的begin(), end(), operator++實現上面枚舉方式的遍歷。
仔細觀察我們會發現iterator是比上面enum方式更高層次的抽象, Iterator支持InputIterator, OutputIterator, ForwardIterator, BidirectionalIterator, RandomAccessIterator, 而上面的IEnum實際上只是ForwardIterator的一種實現。

(7)C++11的foreach方法
C++11的foreach本質上也是iterator的一種封裝, 只要你的類符下面的規范,它就能支持foreach:
> 實現 begin()和end()方法
> 返回的Iterator支持operator*, operator!=, operator++
具體可以參考C++11 range-based for loops

最后簡單總結下,如果沒有特殊情況, 在C++編程中個人還是推薦盡量用Iterator的方式,因為這種方式可以更好的和STL算法融合在一起。不知道大家還有沒有其他的遍歷方式?
posted on 2013-05-15 22:01 Richard Wei 閱讀(3893) 評論(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>
            精品9999| 欧美波霸影院| 久久综合色播五月| 欧美在线视屏| 久久这里有精品15一区二区三区 | 欧美另类女人| 欧美日韩在线另类| 国产日韩欧美三级| 亚洲成人在线观看视频| 亚洲精品国久久99热| 一区二区三区精品在线| 午夜国产精品视频免费体验区| 午夜精品成人在线| 麻豆成人在线观看| 一卡二卡3卡四卡高清精品视频| 亚洲淫性视频| 男人的天堂成人在线| 欧美性开放视频| 尤物yw午夜国产精品视频明星| 亚洲国产精品第一区二区三区 | 久久婷婷国产综合国色天香| 亚洲福利视频一区| 日韩亚洲精品电影| 欧美专区18| 欧美日韩成人一区二区| 国产亚洲一区二区三区在线观看| 最近中文字幕日韩精品| 性伦欧美刺激片在线观看| 欧美激情视频一区二区三区免费| 亚洲一区二区三区精品在线| 欧美ab在线视频| 国内久久婷婷综合| 亚洲欧美综合网| 亚洲精品一区二区在线| 久久看片网站| 国产精品专区第二| 一区二区三区免费在线观看| 美女网站久久| 欧美在线观看视频一区二区| 国产精品激情| 亚洲午夜视频在线| 亚洲精品国产日韩| 欧美成人一区二免费视频软件| 国产精品一卡| 99视频精品免费观看| 欧美电影免费观看| 先锋影音久久久| 欧美视频日韩视频| 在线天堂一区av电影| 欧美国产免费| 久久久久久亚洲精品不卡4k岛国| 国产欧美日韩综合一区在线播放| 亚洲自拍偷拍视频| 在线一区二区三区四区| 欧美日韩在线大尺度| 亚洲视屏一区| 夜夜嗨av一区二区三区网页| 欧美日韩网站| 亚洲欧美美女| 午夜精品亚洲一区二区三区嫩草| 国产精品丝袜91| 欧美在线啊v一区| 欧美一区午夜视频在线观看| 国产一区二区三区高清在线观看| 久久国产主播精品| 久久精品国产亚洲精品| 永久免费精品影视网站| 亚洲高清视频的网址| 欧美日韩国产三级| 校园春色国产精品| 久久激情五月婷婷| 亚洲破处大片| 一区二区三区av| 国产欧美韩日| 免费成人在线视频网站| 欧美国产一区二区三区激情无套| 一区二区欧美日韩| 亚洲主播在线播放| 在线观看不卡| 99综合在线| 国自产拍偷拍福利精品免费一| 嫩草伊人久久精品少妇av杨幂| 欧美电影免费网站| 欧美亚洲一区三区| 欧美~级网站不卡| 亚洲女人av| 免费h精品视频在线播放| 亚洲视频免费在线| 久久精品国产清高在天天线| 亚洲美女网站| 欧美在线观看视频一区二区| 亚洲日本中文字幕| 亚洲欧美日韩精品一区二区| 亚洲激情视频网站| 亚洲综合色网站| 亚洲日本电影在线| 性色av一区二区三区红粉影视| 亚洲三级网站| 欧美一区二区三区日韩| a4yy欧美一区二区三区| 久久国产精品亚洲77777| 在线亚洲自拍| 欧美成人第一页| 欧美在线1区| 欧美日韩亚洲激情| 欧美不卡在线视频| 国产视频一区在线观看一区免费| 一区二区高清视频| 你懂的国产精品| 欧美午夜影院| 欧美成人国产| 国产日韩一区在线| 999亚洲国产精| 在线日本成人| 欧美伊人久久大香线蕉综合69| 日韩一级精品| 久久夜色精品亚洲噜噜国产mv| 欧美亚洲视频一区二区| 欧美日本精品| 亚洲黄色在线| 亚洲福利国产精品| 久久www成人_看片免费不卡| 亚洲永久免费| 欧美三级视频在线播放| 最新日韩在线视频| 亚洲国产成人av在线| 欧美影片第一页| 欧美一区二区三区免费观看视频| 欧美激情二区三区| 欧美激情第3页| 亚洲欧洲日韩女同| 美女精品国产| 欧美 日韩 国产一区二区在线视频| 国产精品综合不卡av| 99热这里只有精品8| 亚洲精选一区二区| 欧美成人精品h版在线观看| 能在线观看的日韩av| 亚洲电影av在线| 久久综合久色欧美综合狠狠| 老妇喷水一区二区三区| 国语自产精品视频在线看8查询8 | 日韩午夜激情| 欧美国产乱视频| 亚洲福利在线看| 91久久精品美女| 欧美日韩另类视频| 中文av一区二区| 亚洲一区二区三区在线视频| 国产精品福利在线观看| 亚洲一二三级电影| 久久久国产精品一区二区三区| 欧美日韩亚洲免费| 亚洲性视频网站| 久久久亚洲欧洲日产国码αv| 国产在线视频不卡二| 久久久蜜桃精品 | 欧美在线在线| 狼狼综合久久久久综合网| 亚洲国产天堂久久综合| 欧美精品一区二区三区四区| 夜夜爽www精品| 久久九九国产精品| 亚洲精品1区2区| 国产精品a级| 久久天堂av综合合色| 亚洲人成小说网站色在线| 亚洲欧美成人网| 尤物九九久久国产精品的分类| 麻豆成人在线| 亚洲午夜高清视频| 欧美成人69av| 免费久久99精品国产自| 亚洲小视频在线观看| 99av国产精品欲麻豆| 久久夜色精品国产亚洲aⅴ| 欧美国产视频一区二区| 中文亚洲字幕| 黄色国产精品一区二区三区| 欧美国产日韩一区二区在线观看| 亚洲资源av| 91久久夜色精品国产网站| 欧美一区二区三区另类| 亚洲国产日韩综合一区| 欧美午夜电影网| 麻豆精品一区二区av白丝在线| 亚洲欧美国产另类| 免费中文字幕日韩欧美| 亚洲专区一区| 亚洲精品在线免费观看视频| 国产日韩精品入口| 欧美日韩在线电影| 欧美国产精品中文字幕| 久久xxxx精品视频| 亚洲视频一区| 亚洲人在线视频| 欧美成人自拍| 久久久综合精品| 久久精品久久99精品久久| 一区二区三区波多野结衣在线观看|