C++中vector和map的刪除方法(推薦)
1.連續(xù)內(nèi)存序列容器(vector,string,deque)
序列容器的erase方法返回值是指向緊接在被刪除元素之后的元素的有效迭代器,可以根據(jù)這個返回值來安全刪除元素。
vector<int> c; for(vector<int>::iterator it = c.begin(); it != c.end();) { if(need_delete()) it = c.erase(it); else ++it; }
2.關(guān)聯(lián)容器(set,multiset,map,multimap)
關(guān)聯(lián)容器的erase方法沒有返回值,被刪除的迭代器失效,所以刪除前必須確保能得到下一個迭代器,可以用“后置遞增迭代器”技術(shù)。
map<int,int> m; for(map<int,int>::iterator it = m.begin(); it != m.end();) { if(need_delete()) m.erase(it++); else ++it; }
m.erase得到it的一個副本,在erase真正開始之前it已經(jīng)遞增了。
所以erase得到了當前的迭代器,在erase內(nèi)部工作開始之前it已經(jīng)++了,正好滿足我們的需要。
以上就是小編為大家?guī)淼腃++中vector和map的刪除方法(推薦)全部內(nèi)容了,希望大家多多支持腳本之家~
相關(guān)文章
C語言詳細分析結(jié)構(gòu)體的內(nèi)存對齊規(guī)則
C 數(shù)組允許定義可存儲相同類型數(shù)據(jù)項的變量,結(jié)構(gòu)是 C 編程中另一種用戶自定義的可用的數(shù)據(jù)類型,它允許你存儲不同類型的數(shù)據(jù)項,本篇讓我們來了解C 的結(jié)構(gòu)體內(nèi)存對齊2022-07-07數(shù)據(jù)結(jié)構(gòu)之位圖(bitmap)詳解
這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu)之位圖詳解,本文講解了位圖的基本知識、位圖的實現(xiàn)方法、位圖的應用等內(nèi)容,需要的朋友可以參考下2014-08-08數(shù)據(jù)結(jié)構(gòu)串的操作實例詳解
這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu)串的操作實例詳解的相關(guān)資料,需要的朋友可以參考下2017-07-07C++中的多態(tài)與多重繼承實現(xiàn)與Java的區(qū)別
這篇文章主要介紹了C++中的多態(tài)與多重繼承實現(xiàn)與Java的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-03-03