正如问题所暗示的那样,我对迭代器和列表有一种非常奇怪的行为。因此,(类)问题需要一个函数来擦除列表中满足条件的所有元素,并且当我试图涵盖我有一个所有元素都相同的列表的情况时,我发现最后一个元素仍然存在.
这是代码:
void esborra_tots(list<Estudiant>& t, int x) {
list<Estudiant>::iterator it;
list<Estudiant>::iterator itend = t.end();
for (it = t.begin(); it != t.end(); it++) {
if ((*it).consultar_DNI() == x) {
t.erase(it);
if (t.empty()) return;
else it = t.begin();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这怎么可能?PD:我不是在寻找解决这个问题的其他方法。