今天碰到一道题,我想直接遍历删除,后来报错了,仔细一想是因为,it删除过后,迭代器就失效了。所以可以用for循环来遍历,但是删除和操作的话得用while语句。
for (vector<task>::iterator it = T.begin(); it != T.end(); it++)
{
if (it->id == tempID)
{
T.erase(it);
}
}
while (it != T.end())
{
if (it->id == tempID)
{
it = T.erase(it);
}
else {
++it;
}
}