entfernen Ich bin neu in C++. Ich würde gerne wissen, wie erfahrene Programmierer das machen.Wie alle geraden ganzen Zahlen aus Satz <int> in C++
was ich habe:
set<int> s;
s.insert(1);
s.insert(2);
s.insert(3);
s.insert(4);
s.insert(5);
for(set<int>::iterator itr = s.begin(); itr != s.end(); ++itr){
if (!(*itr % 2))
s.erase(itr);
}
und natürlich funktioniert es nicht. weil itr nach dem Löschen inkrementiert wird. bedeutet es, dass Itr immer dann auf den Anfang des Sets zeigen muss, nachdem ich das Element aus dem Set gelöscht habe?
Sie haben eine zusätzliche Klammer im Code. – qba
Warum ist itr ++ in der Löschfunktion erlaubt, aber nicht außerhalb? – Quincy
'itr ++' ist draußen erlaubt, aber '++ es' ist im Allgemeinen vorzuziehen, wenn der Wert unbenutzt ist, aus Gründen, die zu mühsam sind, jedes Mal, wenn jemand es macht ;-) In diesem Fall könnte es besser sein ignorieren Sie die übliche gute Praxis und schreiben Sie 'itr ++', nur weil der Code etwas glatter liest, wenn es in beiden Fällen gleich ist. –