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

兔子的技術博客

兔子

   :: 首頁 :: 聯系 :: 聚合  :: 管理
  202 Posts :: 0 Stories :: 43 Comments :: 0 Trackbacks

留言簿(10)

最新評論

閱讀排行榜

評論排行榜

轉自:http://blog.csdn.net/kuanghong/archive/2008/08/20/2801280.aspx

調用reverse_iterator的base成員函數可以產生“對應的”iterator,但這句話有些辭不達意。舉個例子,看一下這段代碼,我們首先把從數字1-5放進一個vector中,然后產生一個指向3的reverse_iterator,并且通過
reverse_iterator的base初始化一個iterator:

 

vector v; 
v.reserve(
5); // 參見條款14 
for(int i = 1;i <= 5++ i) { // 向vector插入1到5 
v.push_back(i); 

vector::reverse_iterator ri 
= // 使ri指向3 
find(v.rbegin(), v.rend(), 3); 
vector::iterator i(ri.
base()); // 使i和ri的base一樣

 

執行上述代碼后,可以想到產生的結果就像這樣: 
 
這張圖很好,顯示了reverse_iterator和它對應的base iterator之間特有的偏移量,就像rbegin()和rend()與相關的begin()和end()一樣,但并沒有說出了所有你需要知道的東西。特別是,它并沒有解釋怎樣在ri上實現你在i上想要完成的操作。有些容器的成員函數只接受iterator類型的參數,所以如果你想要在ri所指的位置插入一個新元素,你不能直接這么做,因為vector的insert函數不接受reverse_iterator。如果你想要刪除ri 所指位置上的元素也會有同樣的問題。erase成員函數會拒絕reverse_iterator,堅持要求iterator。為了完成刪除和一些形式的插入操作,你必須先通過base函數將reverse_iterator轉換成iterator,然后用iterator來完成工作。
先讓我們假設你要在ri指出的位置上把一個新元素插入v。特別的,我們假設你要插入的值是99。記住ri在上
圖中遍歷的順序是自右向左,而且插入操作會將新元素插入到ri位置,并且將原先ri位置的元素移到遍歷過程
的“下一個”位置,我們認為3應該出現在99的左側。插入操作之后,v看起來像這樣: 
 
當然,我們不能用ri來指定插入的地方,因為它不是一個iterator。我們必須用i來代替。如上所述,當ri指向3時,i(就是ri.base())指向4。如果我們用ri來指定插入位置,那么用i指向插入位置,那個假設就是正確的。結論呢?
● 要實現在一個reverse_iterator ri指出的位置上插入新元素,在ri.base()指向的位置插入就行了。對于
insert操作而言,ri和ri.base()是等價的,而且ri.base()真的是ri對應的iterator。
現在再來考慮刪除元素的情況。回顧一下最初的vector(也就是在插入99之前)ri與i的關系: 
 
如果你要刪除ri指向的元素,你不能直接使用i了,因為i與ri不是指向同一個元素。因此,你要刪除的是i的前一個元素。
● 要實現在一個reverse_iterator ri指出的位置上刪除元素,就應該刪除ri.base()的前一個元素。對于刪除操作而言,ri和ri.base()并不等價,而且ri.base()不是ri對應的iterator。
我們還是有必要看看刪除操作的代碼,因為它還挺令人驚訝的。

 

vector v; 
 
// 向v插入1到5,同上 
vecot::reverse_iterator ri = 
find(v.rbegin(), v.rend(), 
3); // 同上,ri指向3 
v.erase(--ri.base()); // 嘗試刪除ri.base()前面的元素;對于vector,一般來說編譯不通過

 

這個設計并不存在什么問題。表達式--ri.base()確實能夠指出我們需要刪除的元素。而且,它們能夠處理除了
vector和string之外的其他所有容器。它可能也能處理vector和string,但對于大多數vector和string的實現,它無。在這樣的實現下,iterator(和const_iterator)會采用內建的指針來實現,所以ri.base()的結果是一個指針。C和C++都規定了不能直接修改函數返回的指針,所以在string和vector的迭代器是指針的STL平臺上,像--ri.base()這樣的表達式無法通過編譯。要移植從一個由reverse_iterator指出的位置刪除元素時,你應該盡量避免修改base的返回值。沒問題。如果你不能減少調用base的返回值,只需要先增加reverse_iterator的值,然后再調用base!

 

 // 同上 
v.erase((++ri).base()); // 刪除ri指向的元素; 
// 這下編譯沒問題了!

 

因為這個方法適用于所有的標準容器,這是刪除一個由reverse_iterator指出的元素時首選的技巧。
現在已經很清楚了,reverse_iterator的base成員函數返回一個“對應的”iterator的說法并不準確。對于插入操作而言,的確如此;但是對于刪除操作,并非如此。當需要把reverse_iterator轉換成iterator的時候,有一點非常重要的是你必須知道你準備怎么處理返回的iterator,因為只有這樣你才能決定你得到的iterator是否是你需要的。

 

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/kuanghong/archive/2008/08/20/2801280.aspx

posted on 2010-03-10 09:54 會飛的兔子 閱讀(2031) 評論(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>
            亚洲欧洲另类国产综合| 欧美日韩国产一区| 国产欧美日韩91| 欧美视频免费在线观看| 欧美成人情趣视频| 美脚丝袜一区二区三区在线观看| 性做久久久久久久久| 久久天堂成人| 一区二区三区高清在线| 亚洲伦理在线| 亚洲一区日本| 久久精品国产v日韩v亚洲| 久久免费视频在线观看| 欧美11—12娇小xxxx| 亚洲高清久久网| 99国产麻豆精品| 亚洲一区二区三区乱码aⅴ蜜桃女| 中国av一区| 欧美综合77777色婷婷| 蜜臀av国产精品久久久久| 亚洲日本电影在线| 亚洲一区二区三区高清不卡| 久久久久久夜| 国产精品成人一区二区网站软件 | 亚洲欧美日韩成人| 香蕉精品999视频一区二区 | 欧美一级大片在线免费观看| 久久久水蜜桃| 亚洲精品在线视频| 久久精品国产99| 欧美三级视频在线观看| 黄网站色欧美视频| 亚洲特色特黄| 欧美插天视频在线播放| 一区二区三区国产精品| 久久久久国产精品一区二区| 欧美日韩伦理在线| 国产综合色产| 亚洲一级二级在线| 欧美电影免费观看高清| 欧美亚洲视频在线看网址| 欧美激情综合网| 韩国av一区| 欧美亚洲日本一区| 日韩一级视频免费观看在线| 母乳一区在线观看| 亚洲国产美女久久久久 | 亚洲女ⅴideoshd黑人| 欧美精品在线视频| 最近看过的日韩成人| 欧美~级网站不卡| 久久精品视频在线看| 国产视频久久久久| 久久se精品一区二区| 亚洲欧美国产va在线影院| 国产精品草莓在线免费观看| 一区二区三区黄色| 在线一区二区三区四区五区| 欧美极品一区二区三区| 亚洲美洲欧洲综合国产一区| 亚洲国产导航| 欧美精品首页| 亚洲视频在线观看三级| 99在线热播精品免费99热| 欧美日韩精品伦理作品在线免费观看| 亚洲高清资源| 欧美国产另类| 毛片基地黄久久久久久天堂| 国产揄拍国内精品对白| 久久久久久999| 亚洲区在线播放| 欧美精品在线观看| 亚洲人成在线观看| 欧美xx视频| 久久免费视频网| 国产综合网站| 欧美激情视频网站| 欧美a级在线| 亚洲成色999久久网站| 国产综合婷婷| 国产自产v一区二区三区c| 亚洲自拍电影| 99精品视频一区| 欧美日韩视频| 国产精品www网站| 久久亚洲高清| 久久成人免费网| 国内免费精品永久在线视频| 久久久精品tv| 久久久精品国产99久久精品芒果| 国产乱码精品一区二区三区不卡| 性欧美长视频| 亚洲一区欧美一区| 国产精品一区二区三区观看 | 国产精品高潮呻吟久久| 亚洲在线中文字幕| 亚洲自拍高清| 在线观看精品| 亚洲国产高清在线观看视频| 欧美成人免费在线| 亚洲午夜性刺激影院| 一区二区精品国产| 国产日韩欧美麻豆| 蜜桃av一区二区在线观看| 久久婷婷国产综合国色天香| 精品二区视频| 欧美激情无毛| 欧美日韩综合精品| 欧美伊人久久久久久午夜久久久久| 亚洲欧美视频一区| 在线观看视频一区二区欧美日韩| 亚洲电影免费在线 | 久久视频国产精品免费视频在线| 在线看视频不卡| 亚洲日本成人在线观看| 国产日韩欧美日韩大片| 免费观看一级特黄欧美大片| 欧美精品一区二区三区蜜桃| 午夜久久黄色| 免费成人你懂的| 亚洲欧美成人一区二区在线电影| 午夜精品网站| 日韩午夜黄色| 欧美一区二区网站| 一区二区三区高清不卡| 欧美一进一出视频| 一区二区三区国产在线观看| 久久久久高清| 亚洲男人第一av网站| 久久久精品性| 亚洲欧洲99久久| 久久亚洲国产成人| 91久久久亚洲精品| 欧美成人精精品一区二区频| 午夜精品理论片| 欧美 日韩 国产 一区| 欧美一二三区精品| 欧美区亚洲区| 欧美大片在线观看一区二区| 午夜影院日韩| 海角社区69精品视频| 亚洲午夜精品久久久久久app| 日韩视频第一页| 久久这里有精品视频| 亚洲午夜久久久| 女人天堂亚洲aⅴ在线观看| 久久免费高清视频| 国产毛片一区二区| 亚洲美女啪啪| 亚洲国产精品久久久久| 欧美一区三区三区高中清蜜桃| 一区二区电影免费观看| 欧美电影在线播放| 欧美高清在线视频观看不卡| 国语自产精品视频在线看抢先版结局| 欧美激情一区在线观看| 99国产精品99久久久久久粉嫩| 久久一区免费| 久久九九免费视频| 国产精品区二区三区日本| 99re视频这里只有精品| 9国产精品视频| 欧美另类videos死尸| 亚洲电影激情视频网站| 亚洲精品女av网站| 欧美精品一卡二卡| 亚洲美女视频| 韩国av一区二区三区在线观看| 新狼窝色av性久久久久久| 欧美成人高清| 亚洲国内在线| 欧美日韩1234| 亚洲视频专区在线| 久久国产精品久久w女人spa| 亚洲高清色综合| 欧美v日韩v国产v| 亚洲精品视频二区| 午夜精品网站| 国产亚洲美州欧州综合国| 欧美韩国日本综合| 夜夜精品视频| 久久国产精品99精品国产| 狠狠色噜噜狠狠色综合久| 蜜桃av一区| 99精品免费网| 亚洲欧美日韩中文视频| 国产一区欧美| 免费在线成人| 一区二区三区精品久久久| 亚洲免费观看| 揄拍成人国产精品视频| 欧美国产高清| 亚洲在线第一页| 免费不卡在线观看| 国产热re99久久6国产精品| 欧美日韩福利| 久久成人免费电影| 亚洲精品国偷自产在线99热| 欧美一二三区精品| 亚洲欧洲精品成人久久奇米网 |