(1)list与vector
list与vector中的erase用法相同,它们的 erase 函数会返回指向下一个元素的迭代器,因此在遍历时,只需要 it = c.erase(it); 即可。如示例代码:
vector
for (; it != vec.end();)
{
if (*it == 10) {
it = vec.erase(it);
}
else {
++it;
}
}
(2)map与set
map与set中的erase用法相同,它们的 erase 函数返回值是 void,调用 erase 之后,当前迭代器会失效,无法再用于获取下一个迭代器。因此需要 erase 之前就获取指向下一个元素的迭代器。
map
for (; it != m.end();)
{
if (it->fist == 10) {
m.erase(it++);
}
else {
++it;
}
}