set中的erase使用的一个错误

如果在遍历set的时候去erase很容易出事
事故代码:

multiset<int>a;
for(auto it=a.begin();it!=a.end();it++){
	a.erase(it);
}

原因:我们删除了it之后指针不知道下一个位置应该去哪了,就寄。
两种比较正确的写法是

multiset<int>a;
for(auto p=a.begin();p!=a.end();p++){
	p=a.erase(p);
}
multiset<int>a;
for(auto p=a.begin();p!=a.end();p++){
	p=a.erase(p++);
}

你可能感兴趣的:(codeforces,算法,c++,数据结构,spring,boot,fastapi,django,maven)