// 在遍历过程中删除元素
方法1:
std::list<int> stList;
std::list<int>::iterator it;
for (it = stList.begin(); it != stList.end();)
{
if (WillDelete(*it))
{
it = stList.erase(it); // 通过erase方法的返回值来获取下一个元素的位置
}
else
{
it++;
}
}
方法2:(有些容器的erase返回值为void类型)
std::list<int> stList;
std::list<int>::iterator it;
for (it = stList.begin(); it != stList.end();)
{
if (WillDelete(*it))
{
stList.erase(it++); // 这样it是有效的,“先使用再++”相当于使用之前有个备份
}
else
{
it++;
}
}
注意:set中的元素可以插入、删除,但是不能修改,需要修改元素的时候不要使用set