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

Mike's blog

  C++博客 :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
  0 Posts :: 23 Stories :: 83 Comments :: 0 Trackbacks

常用鏈接

留言簿(17)

我參與的團隊

搜索

  •  

最新評論

erase()函數(shù)的功能是用來刪除容器中的元素

函數(shù)原型:
iterator erase(iterator where);
iterator erase(iterator first,iterator last);
basic_string
& erase(size_type p0=0,size_type n=np);


刪除某個容器里的某個元素:c.erase(T);
看似一個簡單的動作,然而對不同類型的容器,內部卻做了截然不同的事情,后面介紹。

假設有這樣一個題目,將某個容器中所有滿足條件N == X的元素刪除,按照常規(guī)的思路應該有類似這樣的代碼:

// 假設Container和container分別表示一種容器和對應的一個對象
Container<T>::iterator it;
for (it = container.begin(); it != container.end(); ++it) {
  
if (N == X)
    container.erase(it);
}


然而這樣的代碼對于任一種容器都是錯誤的
容器按內存分配方式可以分為鏈表容器和數(shù)組容器。
所謂的鏈表容器指的是一種表現(xiàn)方式,包括list、slist等這樣基于節(jié)點的容器(動態(tài)分配內存塊)和set、map、multiset、multimap等關聯(lián)容器(平衡樹實現(xiàn)),而數(shù)組容器指的是在一塊連續(xù)的內存上保存元素的連續(xù)內存容器,比如vector、deque、string等。

OK,現(xiàn)在說說erase對他們的操作,鏈表容器以list為例,當執(zhí)行container.erase(it)時,確實第一個滿足條件的元素刪除了,但這時it指針已經(jīng)被刪除了,它也不指向任何元素了,所以也只能到此為止了,也就是說上面的代碼對于鏈表容器來說只能正確刪除第一個滿足條件的元素,針對這個問題我們首先想到的就是在刪除指針之前,給其做個備份,很好,不錯的主意,我們一般采用的方法是建立個臨時變量,這個臨時變量可以在程序循環(huán)中適當?shù)奈恢檬褂茫聪铝写a實現(xiàn),是將這個臨時變量直接建立在erase實現(xiàn)里,這樣做更簡潔,也顯得專業(yè)些(以刪除int型鏈表中所有偶數(shù)為例,也是大家都喜歡的一個例子):

  list<int>::iterator it; 
  
for (it = lt.begin(); it != lt.end(); ) {
    
if (*it % 2 == 0)
      lt.erase(it
++);
    
else
      
++it;
  }

鏈表容器使用erase刪除節(jié)點還有一個特點,就是會將下一個元素的地址返回,所以也可以這樣實現(xiàn):

  list<int>::iterator it; 
  
for (it = lt.begin(); it != lt.end(); ) {
    
if (*it % 2 == 0)
      it 
= lt.erase(it);
    
else
      
++it;
  }


當然用list容器本身提供的算法也是個不錯的主意(掛回調):

  bool evenNumber(int n)
  {
    
return (n % 2 == 0);
  }
  
  
  
  lt.remove_if(evenNumber);


數(shù)組容器以vector為例,當執(zhí)行container.erase(it)時,和上面提到的一樣,第一個滿足條件的元素刪除了,但這時數(shù)組容器不允許中間有“空隙”,所以會做個大動作,就是將被刪元素后面所有的元素前移(參考STL源碼),而數(shù)組容器記錄的是下標,所以刪除元素后,當前下標定位的元素也就順理成章的變成了原有隊列中的下一個元素,同樣以刪除偶數(shù)為例,代碼如下:

  vector<int>::iterator it = v.begin();
  
for (it = v.begin(); it != v.end(); ) { 
    
if (*it % 2 == 0)
      v.erase(it);
    
else
      
++it;
  }

也可以使用reverse_iterator迭代器,并且在某些刪除操作中會有更好的效率(因為它會使上面提到的“大動作”變小一些):

  vector<int>::reverse_iterator ri = v.rbegin();
  
for ( ; ri != v.rend(); ) { 
    
if (*ri % 2 == 0
      v.erase((
++ri).base());
    
else 
      
++ri;
  }


 

posted on 2008-12-26 00:03 老狼 閱讀(2107) 評論(0)  編輯 收藏 引用 所屬分類: C/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>
            亚洲看片免费| 亚洲欧美三级在线| 欧美激情麻豆| 欧美黄色小视频| 亚洲乱码国产乱码精品精天堂| 欧美成人激情视频| 欧美日韩国产美女| 亚洲欧美日韩中文播放| 欧美一区二区三区免费大片| 国产日韩欧美一区在线| 久久综合伊人77777| 巨乳诱惑日韩免费av| 99国产精品久久久久久久久久 | 久久精品一二三| 久久久91精品国产| 亚洲精品一区在线观看| 亚洲免费激情| 国内精品视频在线观看| 亚洲成色999久久网站| 欧美日韩国产欧美日美国产精品| 亚洲天堂av在线免费| 亚洲欧美卡通另类91av| 亚洲国产一区二区a毛片| 日韩亚洲视频| 红桃视频成人| 99视频超级精品| 伊人精品视频| 在线亚洲高清视频| 亚洲国产欧美一区| 亚洲一线二线三线久久久| 亚洲国产日韩欧美在线动漫| 一区二区三区免费观看| 永久555www成人免费| 一区二区三区四区国产精品| 狠狠网亚洲精品| 中国亚洲黄色| 日韩午夜av| 久久一区二区三区超碰国产精品| 亚洲一区www| 欧美国产三级| 蜜臀av一级做a爰片久久| 国产精品美女999| 最新热久久免费视频| 国产一区二区久久久| 99re这里只有精品6| 亚洲国产精品久久久久婷婷老年| 亚洲欧美视频| 亚洲欧美自拍偷拍| 欧美日韩国产综合久久| 欧美成人一区二区在线| 狠狠88综合久久久久综合网| 亚洲摸下面视频| 亚洲欧美bt| 欧美四级剧情无删版影片| 亚洲成人资源| 91久久夜色精品国产网站| 久久激情视频久久| 欧美一区二视频| 国产精品成人一区二区三区夜夜夜| 亚洲国产91精品在线观看| 樱桃视频在线观看一区| 欧美综合二区| 久久天天狠狠| 狠狠色伊人亚洲综合成人| 久久精品国产一区二区三| 久久精品国产久精国产爱| 国产精品一区二区三区乱码| 亚洲一区二区在线免费观看视频| 亚洲一区二区三区久久| 欧美视频一区在线观看| 99亚洲一区二区| 亚洲欧美在线一区二区| 国产精品青草综合久久久久99| 亚洲午夜视频在线观看| 欧美夜福利tv在线| 国产一区二区三区电影在线观看 | 欧美激情按摩在线| 亚洲日韩第九十九页| 你懂的国产精品| 亚洲精品乱码久久久久久久久| 一本色道久久加勒比精品| 欧美日韩亚洲激情| 亚洲综合国产精品| 久久综合久久久| 亚洲美女av网站| 欧美性一区二区| 欧美亚洲自偷自偷| 亚洲缚视频在线观看| 一本色道久久88综合亚洲精品ⅰ | 欧美在线视频免费播放| 久久综合99re88久久爱| 亚洲精品中文字幕有码专区| 欧美日韩美女| 香蕉久久a毛片| 欧美韩日一区二区| 亚洲一二三级电影| 伊人久久婷婷| 欧美日韩国产精品成人| 香蕉久久久久久久av网站| 欧美暴力喷水在线| 亚洲一区免费| 亚洲国产色一区| 国产精品豆花视频| 久久久久久亚洲精品中文字幕| 亚洲区中文字幕| 久久久精品午夜少妇| 一本大道久久a久久精品综合 | 欧美大片在线影院| 亚洲欧美一区二区三区极速播放| 欧美高清在线精品一区| 香蕉久久一区二区不卡无毒影院| 在线欧美一区| 国产婷婷色综合av蜜臀av | 久久久国产精品一区二区中文| 亚洲精品国产欧美| 久久婷婷蜜乳一本欲蜜臀| 亚洲视频一区二区| 亚洲区中文字幕| 国产综合久久| 国产精品亚洲不卡a| 欧美精品在线免费| 久久夜精品va视频免费观看| 亚洲一区二区毛片| 亚洲三级网站| 亚洲成色777777女色窝| 久久免费观看视频| 午夜精品视频网站| 中日韩高清电影网| 99国产精品久久久久久久成人热| 一区在线视频观看| 韩国三级电影一区二区| 国产欧美韩国高清| 国产精品影院在线观看| 欧美视频一区二区三区…| 欧美激情a∨在线视频播放| 久久久一区二区| 久久人人爽人人| 久久久久久久久蜜桃| 久久国产直播| 欧美一区日韩一区| 新67194成人永久网站| 亚洲欧美国产一区二区三区| 亚洲最新视频在线| 亚洲视频在线二区| 中文亚洲欧美| 亚洲欧美日本另类| 香蕉久久夜色| 久久爱www久久做| 久久久之久亚州精品露出| 久久久久国产精品一区| 麻豆av一区二区三区久久| 久久这里只有| 欧美高清视频| 欧美视频久久| 国产日韩精品一区| 韩国三级电影久久久久久| 影音欧美亚洲| 日韩一区二区精品视频| 一本色道久久综合狠狠躁篇怎么玩| 一本色道88久久加勒比精品| 亚洲视频免费在线| 欧美影片第一页| 免费成人激情视频| 亚洲精品视频在线看| 亚洲一区二区三区四区五区午夜 | 亚洲国产精品尤物yw在线观看| 亚洲第一久久影院| 亚洲精品影院| 欧美亚洲三区| 欧美国产日本高清在线| 国产精品v片在线观看不卡 | 国产精品久久久久久影院8一贰佰| 国产精品毛片大码女人| 黄色成人在线网址| 亚洲毛片播放| 久久精品视频99| 亚洲国产日韩在线| 午夜亚洲福利| 欧美激情国产精品| 国产日韩欧美在线观看| 亚洲国产精品一区制服丝袜 | 亚洲欧美日韩在线综合| 美乳少妇欧美精品| 日韩视频免费在线观看| 欧美一区二区视频在线| 欧美精品久久久久久久免费观看| 国产精品一区二区久激情瑜伽| 亚洲第一网站免费视频| 亚洲欧美日韩人成在线播放| 模特精品在线| 欧美一区二区免费视频| 欧美日韩国产电影| 亚洲国产精品成人综合| 午夜免费久久久久| 亚洲韩日在线| 久久露脸国产精品| 国产区精品在线观看| 亚洲一区久久久| 亚洲黄色片网站| 久久亚裔精品欧美|