Stl List - remove, insert und iterator
-
Wenn ich folgendes Mache:
//in einer rekursiven Funktion list<int>::iterator iter; int nextVal; for(iter=myList.begin(); iter!=myList.end(); iter++){ nextVal=(*iter); myList.remove(nextVal); //mache in paar dinge, sich selbst rekursiv aufrufen usw. myList.insert(*iter, nextVal); }bleibt dann die Liste stabil bzw. zeigt der iterator jeweils an die korrekte stelle und läuft die Liste sauber durch?
-
die antwort: vllt.
wenn du die liste veränderst, garantiert dir der standard nicht mehr, dass deine iteratoren noch richtig funktionieren, auch wenn sie es bei einer liste in den meisten fällen wohl tun. aber bitte verlass dich nicht darauf.
-
Das kompiliert schon mal nicht.
-
Ich hab hier was gefunden, was evtl. hilft:
http://lists.uugrn.org/uugrn/02/08/7397.html (Frage)
http://lists.uugrn.org/uugrn/02/08/7398.html (Antwort)
-
camper schrieb:
Das kompiliert schon mal nicht.
Ja, sorry beim Abschreiben einen Fehler eingebaut:
myList.insert(iter, nextVal);airscape schrieb:
Ich hab hier was gefunden, was evtl. hilft:
http://lists.uugrn.org/uugrn/02/08/7397.html (Frage)
http://lists.uugrn.org/uugrn/02/08/7398.html (Antwort)Hmm, also mit gcc funktioniert es scheinbar echt. Bei Visual C++ 05 wirft der iterator aber eine exception.
Das "vllt." von ghorst scheint es am besten zu treffen.

Muß ich das ganze wohl ohne stl zusammenbasteln.