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

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

求STL容器的兩個iterator的距離

什么是Iterator?
        iterator的概念源自于對遍歷一個線性容器工具的抽象,即如何你能訪問這個容器的某個元素。對于最簡單的數組,當然可以用數組的索引值,因為數組是連續存放在內存中的;但對于鏈表,就必須用指針。除此之外,還有還有很多種數據結構需要提供一個方便的工具來訪問其中的元素,方法有ID,關鍵字等等。為了統一所有的容器的這種工具的使用,一般提供一整套容器的開發者就會用一種方式來表示各種容器的訪問工具。例如C++   STL就是使用iterator。MFC自己的容器使用position。C#和java也有自己的方法,但方法是不變的。   
        iterator的用法可以被統一,但不同的底層容器實現其iterator的原理是不一樣的。例如iterator++你可以理解為移動到容器的下一個元素,如果底層如果是數組,把索引值加一就行;如果底層是鏈表,就得執行類似于m_pCurrent   =   m_pCurrent->pNext;的操作。因此每種容器都有自己的iterator實現方法。

Iterator的類型
1、Input Interator :只允許作為輸入,也就是只讀(Read Only)
2、Output Interator :只允許作為輸出,也就是只寫(Write Only)
3、Forward Interator :允許讀寫,但只能做前向移動
4、Bidirectional Interator :允許讀寫,可以做雙向移動
5、Random Access Interator :允許讀寫,可以任意移動


實現Distance()
        由上可知,從容器特性來劃分是具有兩種iterator的,一種是線性容器的iterator(數組,vector等);一種是非線性容器的iterator(鏈表等),因此求兩個容器的距離自然也是有兩種方法的。

非線性容器:
int distance(InputIterator p1, InputIterator p2)
{
  size_t n 
= 0;
  
while ( p1 != p2 )
  
{
     
++p1;
     
++n;   
  }

  
return n;
}
 


線性容器:
int distance(RandomAccessIterator p1, RandomAccessIterator p2)
{
 
return p2-p1;
}
 


std::distance()實現了以上兩種Iterator的算法,并根據傳入的Iterator類型進行適配。
具體可以參考侯捷翻譯的《STL源碼剖析》一書,當中有詳細的講解。

posted on 2009-01-08 19:17 楊粼波 閱讀(1220) 評論(3)  編輯 收藏 引用

評論

# re: 求STL容器的兩個iterator的距離[未登錄] 2009-01-25 10:31 Felicia

有問題吧……
非線性容器才需要用循環一個一個加的,比如map  回復  更多評論   

# re: 求STL容器的兩個iterator的距離 2009-01-26 12:34 楊粼波

非常抱歉,筆誤了....
也就是vector和數組是線形的,
STL里面,map是基于list實現的,都是非線形的.  回復  更多評論   

# re: 求STL容器的兩個iterator的距離 2009-07-28 09:19 要輸姓名?

vc6 中自帶的 STL 中 map 是用 紅黑樹實現的,vc2003(好像)之后的版本使用哈希樹,gcc libstd++ 不太清楚,反正不可能是線性表結構。

線性表結構搜索一個元素復雜度為 O(N)。不適合搜索。
AVL-樹搜索一個元素復雜度為 O(log2 N)。

map 查找元素速度還是很快的。  回復  更多評論   

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产精品亚洲аv天堂网| 亚洲精品国产精品国产自| 久久久亚洲午夜电影| 久久精品91| 久久精品欧美日韩精品| 久久噜噜噜精品国产亚洲综合| 亚洲性图久久| 欧美亚洲系列| 久久一区二区三区av| 欧美超级免费视 在线| 欧美激情一区二区三区不卡| 欧美日韩综合在线免费观看| 欧美日韩在线观看一区二区三区| 欧美国产亚洲另类动漫| 欧美日韩一区三区| 国产视频丨精品|在线观看| 伊人久久久大香线蕉综合直播| 亚洲黄色在线观看| 午夜亚洲影视| 欧美国产日韩在线| 一区二区三区国产| 久久―日本道色综合久久| 欧美日韩在线大尺度| 国产一区二区久久精品| 亚洲精品在线三区| 久久久久看片| 91久久国产综合久久| 久热国产精品视频| 亚洲人久久久| 久久免费视频网站| 国产精品久久久久久久午夜| 亚洲国产aⅴ天堂久久| 校园激情久久| 亚洲美女精品一区| 小处雏高清一区二区三区| 欧美激情影院| 在线精品一区二区| 久久精品国产综合精品| 亚洲色图在线视频| 欧美极品在线播放| 91久久精品国产91性色tv| 久久久久久噜噜噜久久久精品| 亚洲少妇一区| 欧美午夜视频一区二区| 夜夜精品视频| 亚洲国产一区二区三区青草影视 | 嫩草成人www欧美| 亚洲乱码国产乱码精品精98午夜| 一区二区三区精密机械公司| 国产一区二区黄| 亚洲美女中文字幕| 欧美成人性生活| 久久久久久久91| 国产亚洲精品bt天堂精选| 亚洲永久免费精品| 日韩一级免费| 欧美日本免费| 一区二区三区免费网站| 亚洲区在线播放| 欧美成人免费网站| 亚洲欧洲一区二区在线播放| 老牛国产精品一区的观看方式| 国产亚洲在线| 女主播福利一区| 国产视频亚洲精品| 国产目拍亚洲精品99久久精品| 国产欧美日韩免费| 性欧美精品高清| 美国成人直播| 亚洲欧美激情视频在线观看一区二区三区| 老司机一区二区三区| 影音欧美亚洲| 老司机免费视频一区二区| 中日韩高清电影网| 欧美视频观看一区| 中文一区二区在线观看| 夜夜嗨av色一区二区不卡| 欧美日韩国产区一| 亚洲一区免费观看| 香蕉免费一区二区三区在线观看 | 亚洲品质自拍| 国产精品vvv| 精品不卡在线| 免费成人av在线| 欧美激情一区二区三区全黄| 亚洲黄色影院| 亚洲经典自拍| 国产精品婷婷| 久久日韩精品| 欧美 日韩 国产一区二区在线视频| 亚洲激情另类| 9l国产精品久久久久麻豆| 国产伦精品一区| 免播放器亚洲一区| 欧美日韩一区二区三区四区在线观看| 一本大道久久a久久精二百| 在线亚洲激情| 久久成人精品| 亚洲午夜精品福利| 国内精品免费在线观看| 蜜臀久久久99精品久久久久久 | 久久久亚洲综合| 亚洲一级一区| 久久av一区二区三区漫画| 亚洲精品久久久久久久久| 在线亚洲欧美| 国产精品一二三视频| 亚洲国产mv| 欧美日韩亚洲国产精品| 久久久久久久综合| 欧美黄色日本| 老司机aⅴ在线精品导航| 欧美日韩在线不卡| 欧美激情亚洲另类| 国产一区二区在线免费观看| 亚洲第一色中文字幕| 国产一区二区三区在线观看视频| 亚洲激情在线播放| 在线播放日韩专区| 午夜一区二区三区不卡视频| 亚洲精品综合精品自拍| 亚洲欧美在线一区二区| 亚洲欧洲一区二区三区| 久久国产色av| 亚洲欧美成人一区二区三区| 欧美国产亚洲精品久久久8v| 欧美成人高清| 在线播放亚洲一区| 久久精品国产久精国产一老狼 | 久久全球大尺度高清视频| 性色av一区二区三区在线观看| 欧美日韩视频一区二区三区| 欧美激情91| 亚洲二区免费| 欧美在线视频一区二区三区| 欧美尤物巨大精品爽| 国产精品视频一区二区三区| 亚洲精品免费网站| 日韩一区二区精品视频| 欧美喷水视频| 夜夜嗨av一区二区三区中文字幕| 亚洲伦理中文字幕| 快射av在线播放一区| 亚洲大胆人体在线| 夜夜狂射影院欧美极品| 久久嫩草精品久久久久| 在线国产精品一区| 亚洲特色特黄| 久久久精品一区二区三区| 久久久国产一区二区| 国产欧美日韩另类一区| 午夜免费电影一区在线观看| 欧美一级视频精品观看| 国产精品狠色婷| 亚洲欧美精品在线观看| 久久久在线视频| 亚洲国产精品传媒在线观看| 免费一级欧美片在线播放| 91久久午夜| 欧美激情91| 久久天天狠狠| 在线成人国产| 欧美精品一区在线观看| 亚洲网站在线| 六月婷婷久久| 亚洲精品久久嫩草网站秘色| 欧美精品在线观看播放| 亚洲欧美另类中文字幕| 久久夜色精品国产欧美乱| 亚洲精品裸体| 国产精品免费网站| 久久久噜噜噜久久| 亚洲欧洲在线观看| 欧美亚洲网站| 亚洲乱码国产乱码精品精98午夜| 欧美调教视频| 久久久久高清| 夜夜精品视频| 欧美成人免费视频| 一区二区高清在线观看| 国产一区二区三区高清播放| 欧美.com| 亚洲在线网站| 亚洲欧洲一区二区在线观看 | 欧美激情精品久久久久久黑人 | 暖暖成人免费视频| 午夜在线电影亚洲一区| 亚洲黄色在线观看| 国产午夜精品在线| 欧美日韩蜜桃| 蜜臀av国产精品久久久久| 亚洲综合色激情五月| 亚洲精品一区二区三区四区高清| 久久在线精品| 久久福利视频导航| 午夜在线a亚洲v天堂网2018| 99精品国产99久久久久久福利| 韩国三级电影一区二区| 国产精品日韩专区| 欧美日韩亚洲一区二区三区在线 |