最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

stl容器set,map,vector之erase用法與返回值詳細解析

 更新時間:2013年09月24日 09:06:18   作者:  
在使用 list、set 或 map遍歷刪除某些元素時可以這樣使用,如下所示

總結(jié)本人在工作中經(jīng)驗教訓。

在使用 list、set 或 map遍歷刪除某些元素時可以這樣使用:

正確使用方法1

復制代碼 代碼如下:

      std::list< int> List;
      std::list< int>::iterator itList;
      for( itList = List.begin(); itList != List.end(); )
      {
            if( WillDelete( *itList) )
            {
               itList = List.erase( itList);
            }
            else
               itList++;
      }

正確使用方法2 
復制代碼 代碼如下:

    std::list< int> List;
      std::list< int>::iterator itList;
      for( itList = List.begin(); itList != List.end(); )
      {
            if( WillDelete( *itList) )
            {
               List.erase(itList++);
            }
            else
               itList++;
      }

正確使用方法3
復制代碼 代碼如下:

      std::list< int> List;
      std::list< int>::iterator it, next;
      for( it = List.begin(), next = it, next ++; it != List.end(); it = next, ++next)
      {
            if( WillDelete( *it) )
            {
               List.erase(it);
            }
      }

注:方法三更為巧妙,但需注意方法三是用前需要判斷容器是否為空,否則迭代器會出問題。

我測試得出,set.erase 不返回迭代器,list返回。
vector  刪除操作

復制代碼 代碼如下:

std::vector <PACK_PRINT>::iterator It ;
for(It=printItems.begin();It!=printItems.end();)
{
  //我是說這里怎么判斷printItems printItems 里PACK_PRINT.bh =0

  if( It.bh ==0) //是這樣嗎?
  {//刪除
       It=printItems.erase(It);
  }
  else
  {//不刪除
       ++It;
  }
}


復制代碼 代碼如下:

std::vector <PACK_PRINT> printItems;
int i = 0;
while(i < printItems.size())
{

          if(printItems[i].bh == 0)  //這里比如我想把 printItems 時PACK_PRINT.bh =0 的刪除如何寫喲。另外這樣刪除有錯嗎?
          {//刪除
                printItems.erase(printItems.begin() + i);
          }
          else
          {//不刪除
                ++i;
          }
}

相關(guān)文章

  • C語言實現(xiàn)搶紅包程序代碼精簡版

    C語言實現(xiàn)搶紅包程序代碼精簡版

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)搶紅包程序代碼的精簡版,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • C++多重繼承引發(fā)的重復調(diào)用問題與解決方法

    C++多重繼承引發(fā)的重復調(diào)用問題與解決方法

    這篇文章主要介紹了C++多重繼承引發(fā)的重復調(diào)用問題與解決方法,結(jié)合具體實例形式分析了C++多重調(diào)用中的重復調(diào)用問題及相應的解決方法,需要的朋友可以參考下
    2018-05-05
  • C語言基于EasyX庫實現(xiàn)有顏色彈跳小球

    C語言基于EasyX庫實現(xiàn)有顏色彈跳小球

    這篇文章主要為大家詳細介紹了C語言基于EasyX庫實現(xiàn)有顏色彈跳小球,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C語言 選擇排序算法詳解及實現(xiàn)代碼

    C語言 選擇排序算法詳解及實現(xiàn)代碼

    本文主要介紹C語言 選擇排序算法,這里對排序算法做了詳細說明,并附代碼示例,有需要的小伙伴可以參考下
    2016-08-08
  • C語言菜鳥基礎教程之單精度浮點數(shù)與雙精度浮點數(shù)

    C語言菜鳥基礎教程之單精度浮點數(shù)與雙精度浮點數(shù)

    在C語言中,單精度浮點數(shù)(float)和雙精度浮點數(shù)(double)類型都是用來儲存實數(shù)的,雙精度是用記憶較多,有效數(shù)字較多,數(shù)值范圍較大。
    2017-10-10
  • C語言中循環(huán)語句練習實例

    C語言中循環(huán)語句練習實例

    大家好,本篇文章主要講的是C語言中循環(huán)語句練習實例,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • 純C語言:遞歸二進制轉(zhuǎn)十進制源碼分享

    純C語言:遞歸二進制轉(zhuǎn)十進制源碼分享

    這篇文章主要介紹了純C語言:遞歸二進制轉(zhuǎn)十進制源碼,有需要的朋友可以參考一下
    2014-01-01
  • C語言超詳細講解線性表

    C語言超詳細講解線性表

    線性表,數(shù)據(jù)結(jié)構(gòu)中最簡單的一種存儲結(jié)構(gòu),專門用于存儲邏輯關(guān)系為"一對一"的數(shù)據(jù)。線性表是基于數(shù)據(jù)在實際物理空間中的存儲狀態(tài),又可細分為順序表(順序存儲結(jié)構(gòu))和鏈表
    2022-07-07
  • C++ 之explicit關(guān)鍵字

    C++ 之explicit關(guān)鍵字

    今天我們來談談C++中的explicit關(guān)鍵字,這篇文章詳細介紹了C語言的關(guān)鍵字explicit關(guān)鍵字,本文有詳細的代碼實例,感興趣的同學可以借鑒參考
    2023-04-04
  • VC實現(xiàn)五子棋游戲的一個算法示例

    VC實現(xiàn)五子棋游戲的一個算法示例

    這篇文章主要介紹了VC實現(xiàn)五子棋游戲的一個算法示例,對于學習數(shù)據(jù)結(jié)構(gòu)與算法的朋友有一定的借鑒價值,需要的朋友可以參考下
    2014-08-08

最新評論

穆棱市| 新密市| 郴州市| 贡觉县| 霞浦县| 赤峰市| 唐海县| 黑山县| 长治县| 苏尼特左旗| 得荣县| 刚察县| 呼图壁县| 霍城县| 广元市| 东光县| 墨竹工卡县| 克山县| 乌兰县| 内江市| 长顺县| 轮台县| 浙江省| 科技| 万州区| 凤山市| 炎陵县| 子洲县| 静宁县| 祁连县| 万载县| 五家渠市| 石泉县| 杨浦区| 天祝| 宁远县| 上蔡县| 崇州市| 临漳县| 玉林市| 苍山县|