list<employee> remove_employees(const string& name,
const string& lastname)
{
list<employee> listOfRemoved;
list<employee>::iterator it;
for(it=employees.begin(); it != employees.end(); )
{
if(it->get_name() == name && it->get_lastname() ==lastname)
{
listOfRemoved.push_back(*it);
employees.erase(it);
}
else
it++;
}
return listOfRemoved;
}
Run Code Online (Sandbox Code Playgroud)
我试图从类实例变量员工中删除一些员工,然后返回一个新列表,只有已删除的emeployees.当我尝试运行程序时,它会从标题中给出错误.我知道它与擦除和push_back有关,但我无法弄明白.
hmj*_*mjd 10
更改:
employees.erase(it);
Run Code Online (Sandbox Code Playgroud)
至:
it = employees.erase(it);
Run Code Online (Sandbox Code Playgroud)
否则,在循环的下一次迭代it中将引用无效元素.list::erase()返回最后一个删除元素后的迭代器.
[ 我将标题解释为编译器错误,而不是运行时错误.]