erase(iter),将导致iter失效,并返回指向下一个元素的迭代器
C++STL(vector,map,set,list)成员函数整理
测试代码:
#include <map>
#include <vector>
#include <set>
#include <list>
#include <iostream>
using namespace std;
int main() {
int val = 6;
vector<int> v = { 6,6,6 };
for (auto it = v.begin(); it!=v.end(); ) {
if (*it == val) {
it = v.erase(it); //返回指向下一个元素的迭代器
}
else {
it++;
}
}
map<int, int> mp = { {1,6} ,{2,6} };
for (auto it = mp.begin(); it != mp.end(); ) {
if (it->second == val) {
it = mp.erase(it);
}
else {
it++;
}
}
set<int> st = { 6 };
for (auto it = st.begin(); it != st.end(); ) {
if (*it == val) {
it=st.erase(it);
}
else {
it++;
}
}
list<int> lt = { 6 ,6 };
for (auto it = lt.begin(); it != lt.end(); ) {
if (*it == val) {
it = lt.erase(it);
}
else {
it++;
}
}
cout << v.size() << mp.size() << st.size() << lt.size() << endl;
return 0;
}