亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++如何刪除map容器中指定值的元素詳解

2020-01-26 14:04:12
字體:
來源:轉載
供稿:網友

前言

大家都知道map容器是C++ STL中的重要一員,平時會遇到刪除map容器中value為指定元素的問題,例如刪除所有字符串為"123"或者能整除3的元素。

一、map容器下的方法說明

由于map容器下的方法較多,這里只列舉代碼中用到的幾個方法:

insert()方法:

//插入val到pos的后面,然后返回一個指向這個元素的迭代器iterator insert( iterator pos, const pair<KEY_TYPE,VALUE_TYPE> &val );//插入start到end的元素到map中void insert( input_iterator start, input_iterator end );//只有在val不存在時插入val。返回值是一個指向被插入元素的迭代器和一個描述是否插入的bool值pair<iterator, bool> insert( const pair<KEY_TYPE,VALUE_TYPE> &val );

erase()方法:

//erase()函數刪除在pos位置的元素,或者刪除在start和end之間的元素,或者刪除那些值為key的所有元素void erase( iterator pos );void erase( iterator start, iterator end );size_type erase( const KEY_TYPE &key );

iterator迭代器。

二、刪除map容器中指定的字符串

下面代碼中map容器的value對應的是一個string類型的指針,在初始化時類似于string *p = new string("123"); 。

/** * @FileName map_del_str.cpp * @Describe A simple example for deleting an element of string in map. * @Author  vfhky 2016-06-26 10:26 https://typecodes.com/cseries/mapdelintstring.html * @Compile  g++ map_del_str.cpp -o map_del_str * @Reference  */#include <iostream>#include <map>using namespace std;#define TOTAL 10#define DEL_STR "123"/** * 刪除map中所有元素為str的數據 */void fun( map<int, string *> &map1, const string str ){ map<int, string *>::iterator it; int i_Total = 0; for( it=map1.begin(); it!=map1.end(); ) {  if( *(it->second) == str )  {   /**    * 123 123 123 123 123 123 123 123 123 123     */   cout << *(it->second) << " ";   //一定要先釋放內存的控制   delete it->second;   it->second = NULL;   //再刪除迭代   map1.erase(it++);   ++i_Total;  }  else  {   it++;  } } //i_Total=[10] cout << endl << "i_Total=[" << i_Total << "]" << endl;}int main( int argc, char **argv ){ map<int, string *> map1; //初始化map1 for( int i=0; i<TOTAL; i++ ) {  map1.insert( pair<int, string *>(i,new string("123")) );  //map1[i] = new string("123"); } //刪除為DEL_STR的元素 fun( map1, DEL_STR ); //查看最后的數據 map<int, string *>::iterator it1; for( it1=map1.begin(); it1!=map1.end(); ++it1 ) {  cout << "map1[" << it1->first << "]=[" << *(it1->second) << "]" << endl; } return 0;}

效果如下圖所示:

三、刪除map容器中指定的整型數據

下面代碼中map容器的value對應的是一個int數據,在初始化時可以直接使用map1[i] = i語句。

/** * @FileName map_del_int.cpp * @Describe A simple example for deleting an element of interger in map. * @Author  vfhky 2016-06-26 10:26 https://typecodes.com/cseries/mapdelintstring.html * @Compile  g++ map_del_int.cpp -o map_del_int * @Reference  */#include <iostream>#include <map>using namespace std;#define TOTAL 100#define DEL_INT 3/** * 刪除map中所有值整除NUM的元素 */void fun( map<int,int> &map1, const int NUM ){ map<int, int>::iterator it; int i_Total = 0; for( it=map1.begin(); it!=map1.end(); ) {  if( it->second % NUM == 0 )  {   /**    * 0 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69 72 75 78 81 84 87 90 93 96 99     */   cout << it->second << " ";   map1.erase(it++);   ++i_Total;  }  else  {   it++;  } } cout << endl << "i_Total=[" << i_Total << "]" << endl;}int main( int argc, char **argv ){ map<int, int> map1; //初始化map1 for( int i=0; i<TOTAL; i++ ) {  map1.insert(pair<int, int>(i,i));  //map1[i] = i; } //刪除整除3的元素 fun( map1, DEL_INT ); //查看最后的數據 map<int, int>::iterator it1; for( it1=map1.begin(); it1!=map1.end(); ++it1 ) {  cout << "map1[" << it1->first << "]=[" << it1->second << "]" << endl; } return 0;}

效果如下圖所示:

四、附錄

STL容器分順序容器Sequence Container(包含vector,deque,list容器)和關聯容器Associative Container(包含set,multiset,map,multimap容器)。C++標準中,Sequence Container的erase函數會返回iterator,但Associative Container不返回iterator。所以在小節2、小節3中使用map1.erase(it++)而不是直接map1.erase(it) 。

五、總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美性受xxx| 欧美精品成人91久久久久久久| 亚洲美女av网站| 亚洲第一色在线| 97在线精品国自产拍中文| 久久久久久中文字幕| 一区二区成人av| 欧洲午夜精品久久久| 国产精品91免费在线| 91高潮精品免费porn| 韩国欧美亚洲国产| 亚洲午夜精品久久久久久性色| 综合久久五月天| 中文精品99久久国产香蕉| 午夜精品视频网站| 日韩成人中文字幕在线观看| 国产一区二区美女视频| 96国产粉嫩美女| 97视频国产在线| 成人黄色短视频在线观看| 国产色综合天天综合网| 欧美精品激情在线观看| 国产精品自拍视频| 国产精品免费一区二区三区都可以| 亚洲天堂av高清| 欧美成人午夜剧场免费观看| 中文字幕av一区中文字幕天堂| 日韩精品免费在线视频| 日韩精品日韩在线观看| 国产精品国产三级国产专播精品人| 国产香蕉精品视频一区二区三区| 亚洲精品成人av| 中国人与牲禽动交精品| 国产精品成人免费电影| 久久久人成影片一区二区三区观看| 日韩一区av在线| 日韩精品视频免费| www.亚洲成人| 久久视频在线观看免费| 国产精品丝袜一区二区三区| 欧美性黄网官网| 亚洲精品日产aⅴ| 91高清免费在线观看| 国产成人精品日本亚洲| 国产精品aaa| 亚洲理论电影网| 最近免费中文字幕视频2019| 久久精品国产视频| 中文字幕在线看视频国产欧美| 国产亚洲精品一区二区| 欧美激情精品久久久久久蜜臀| 美日韩丰满少妇在线观看| 亚洲色图17p| 久久久日本电影| 亚洲欧洲一区二区三区在线观看| 91久久国产婷婷一区二区| 欧美精品一本久久男人的天堂| 欧美日韩免费一区| 国产成人福利视频| 中文字幕一精品亚洲无线一区| 欧美日韩国产精品一区二区三区四区| 欧美高清电影在线看| 91精品视频免费观看| 久久精品久久精品亚洲人| 国产精品极品在线| 国产91精品青草社区| 国产日韩精品在线播放| 91精品国产综合久久香蕉的用户体验| 国产精品专区一| 中文字幕亚洲在线| 亚洲欧洲在线免费| 成人a视频在线观看| 日韩欧美精品免费在线| 欧美日韩不卡合集视频| 全球成人中文在线| 日韩欧美一区二区三区| 日韩欧美在线第一页| 国产精品久久久久影院日本| 亚洲综合在线播放| …久久精品99久久香蕉国产| 欧美日韩国产色视频| 韩国福利视频一区| 国产成人鲁鲁免费视频a| 日韩动漫免费观看电视剧高清| 亚洲视频一区二区| 国产精品高精视频免费| 国产精品永久免费视频| 中文字幕亚洲一区二区三区| 国产亚洲人成a一在线v站| 国产va免费精品高清在线| 在线免费观看羞羞视频一区二区| 亚洲色在线视频| 久久九九全国免费精品观看| 久久精品国产一区二区电影| 国产精品91视频| 久久精品国产96久久久香蕉| 国产亚洲精品美女久久久| 欧美激情影音先锋| 美女久久久久久久| 久久视频在线视频| 欧美精品一区二区免费| 久久青草精品视频免费观看| 欧美成人国产va精品日本一级| 亚洲高清色综合| 国产精品久久久久av| 亚洲美女在线视频| www.亚洲天堂| 91在线观看免费高清完整版在线观看| 亚洲精品久久在线| 久久91精品国产91久久跳| 欧美在线一级视频| 欧美性69xxxx肥| 亚洲tv在线观看| 日韩精品欧美国产精品忘忧草| 亚洲乱码国产乱码精品精天堂| 国产视频在线观看一区二区| 亚洲成色www8888| 久久综合免费视频| 亚洲老头老太hd| 久热爱精品视频线路一| 久久久精品一区二区| 亚洲国产精品va在线看黑人动漫| 久久人体大胆视频| 欧美大片免费观看在线观看网站推荐| 影音先锋欧美精品| 亚洲成人久久久久| 久久综合九色九九| 国产精品扒开腿做爽爽爽视频| 亚州av一区二区| 日韩在线视频国产| 国产成人avxxxxx在线看| 欧美极品美女电影一区| 亚洲一区二区在线| 日韩久久免费视频| 精品国产91乱高清在线观看| 国产综合香蕉五月婷在线| 国产精品91免费在线| 亚洲欧洲在线看| 久久影院免费观看| 九九热在线精品视频| 色综合伊人色综合网| 亚洲人成电影网站色www| 欧美大奶子在线| 青青a在线精品免费观看| 欧美黑人xxx| 91高清视频免费观看| 成人免费视频网址| 亚洲国产另类久久精品| 国外色69视频在线观看| 8x海外华人永久免费日韩内陆视频| 中文字幕日韩av综合精品| 91精品国产91久久久久久久久| 中文欧美日本在线资源| 精品视频在线播放色网色视频| 国产精品久久久久久久久借妻| 国产精品av在线| 日韩av中文字幕在线免费观看| 欧美视频第一页| 国产精品亚洲第一区| 亚洲欧美一区二区三区情侣bbw| 日韩有码在线电影| 国产激情999| 国产91成人video| 性夜试看影院91社区|