這篇文章給大家分享的是有關(guān)C++怎么刪除map容器中指定值的元素的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。
創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括正藍(lán)網(wǎng)站建設(shè)、正藍(lán)網(wǎng)站制作、正藍(lán)網(wǎng)頁制作以及正藍(lán)網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,正藍(lán)網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到正藍(lán)省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
一、map容器下的方法說明
由于map容器下的方法較多,這里只列舉代碼中用到的幾個(gè)方法:
insert()方法:
//插入val到pos的后面,然后返回一個(gè)指向這個(gè)元素的迭代器 iterator insert( iterator pos, const pair<KEY_TYPE,VALUE_TYPE> &val ); //插入start到end的元素到map中 void insert( input_iterator start, input_iterator end ); //只有在val不存在時(shí)插入val。返回值是一個(gè)指向被插入元素的迭代器和一個(gè)描述是否插入的bool值 pair<iterator, bool> insert( const pair<KEY_TYPE,VALUE_TYPE> &val );
erase()方法:
//erase()函數(shù)刪除在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對應(yīng)的是一個(gè)string類型的指針,在初始化時(shí)類似于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的數(shù)據(jù) */ 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) << " "; //一定要先釋放內(nèi)存的控制 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 ); //查看最后的數(shù)據(jù) map<int, string *>::iterator it1; for( it1=map1.begin(); it1!=map1.end(); ++it1 ) { cout << "map1[" << it1->first << "]=[" << *(it1->second) << "]" << endl; } return 0; }
效果如下圖所示:
三、刪除map容器中指定的整型數(shù)據(jù)
下面代碼中map容器的value對應(yīng)的是一個(gè)int數(shù)據(jù),在初始化時(shí)可以直接使用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 ); //查看最后的數(shù)據(jù) 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容器)和關(guān)聯(lián)容器Associative Container(包含set,multiset,map,multimap容器)。C++標(biāo)準(zhǔn)中,Sequence Container的erase函數(shù)會(huì)返回iterator,但Associative Container不返回iterator。所以在小節(jié)2、小節(jié)3中使用map1.erase(it++)
而不是直接map1.erase(it)
。
感謝各位的閱讀!關(guān)于“C++怎么刪除map容器中指定值的元素”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
分享文章:C++怎么刪除map容器中指定值的元素
新聞來源:http://vcdvsql.cn/article24/pphije.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、標(biāo)簽優(yōu)化、營銷型網(wǎng)站建設(shè)、面包屑導(dǎo)航、軟件開發(fā)、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)