1.連續內存序列容器(vector,string,deque)
序列容器的erase方法返回值是指向緊接在被刪除元素之后的元素的有效迭代器,可以根據這個返回值來安全刪除元素。
vector<int> c;for(vector<int>::iterator it = c.begin(); it != c.end();){ if(need_delete()) it = c.erase(it); else ++it; }
2.關聯容器(set,multiset,map,multimap)
關聯容器的erase方法沒有返回值,被刪除的迭代器失效,所以刪除前必須確保能得到下一個迭代器,可以用“后置遞增迭代器”技術。
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已經遞增了。
所以erase得到了當前的迭代器,在erase內部工作開始之前it已經++了,正好滿足我們的需要。
以上就是小編為大家帶來的C++中vector和map的刪除方法(推薦)全部內容了,希望大家多多支持VEVB武林網~
新聞熱點
疑難解答