iterator nach erase weiter verwenden...?
-
Dann sieht es ja fast so aus, als wenn man sowas nicht bei einem set machen sollte. Ich meine dann gibt es ja keine vernünftige Technik um das zu realisieren?!
-
Was sit daran unvernünftig den Iterator einfach auf den Anfang zu setzen? Außerdem trifft das auf alle stl-container zu...
-
Ah, so geht das. Die meisten Container geben ja bei erase auch einen gültigen Iterator zurück. Ich verstehe aber einfach nicht warum das nicht alle Container machen.
-
Bearbeitet man dann nicht Elemente doppelt?
-
Das ist tatsächlich merkwürdig...
-
Eventuell kann man mit std::remove_if was machen
-
ness schrieb:
Ja. Aber bei einer Löschaktion werden _alle_ Iteratoren ungültig.
So ein Käse. RTFM. Der Code von ssm ist für eine std::set (und jeden anderen assoziativen STL-Container) absolut korrekt und steht genauso in jedem guten Anfängerbuch. Siehe z.B. Scott Meyers "Effective STL - Item 9".
Bitte nicht einfach irgendwas behaupten und dann hoffen, dass wir den Schwachfug nicht bemerken.
-
Haha, Shade und ness wissen nicht wie post-increment funktioniert!
-
Honk XP schrieb:
Haha, Shade und ness wissen nicht wie post-increment funktioniert!
Es geht hier weniger um die Wirkunsweise von Post-Increment (die kennt Shade sogar im Schlaf) sondern vielmehr um die Iterator/Referenz-Invalidierungseigenschaften der STL-Container sowie um die Signaturen der einzelnen erase-Methoden.
-
Tschuldigung, hatte noch den thread: http://www.c-plusplus.net/forum/viewtopic.php?t=92015&highlight=ung�ltig im Kopf. Aber der bezog sich ja auf einen std::vector...