Ich habe diesen Code:
int main()
{
vector<int> res;
res.push_back(1);
vector<int>::iterator it = res.begin();
for( ; it != res.end(); it++)
{
it = res.erase(it);
//if(it == res.end())
// return 0;
}
}
"Ein Iterator mit wahlfreiem Zugriff, der auf die neue Position des Elements zeigt, das auf das letzte durch den Funktionsaufruf gelöschte Element folgt. Dies ist das Vektorende, wenn die Operation das letzte Element in der Sequenz gelöscht hat."
Dieser Code stürzt ab, aber wenn ich den if(it == res.end())
Teil verwende und dann zurückkehre, funktioniert er. Woher? Cache der for-Schleifen-Cache res.end()
so, dass der ungleiche Operator ausfällt?