Ist es erlaubt, ein Element von Iterator darauf zu löschen und voran die gleiche Iterator in einer Linie zur nächsten Element zu gehen?
Ja, es ist gültig.
Rationale:
it++
Inkrementen it
, so dass es auf das nächste Element bezieht, sondern eine Kopie seiner ursprünglichen Wert ergibt. Daher bezieht sich it
nicht auf das Element, das entfernt wird, wenn erase()
aufgerufen wird. Und im Fall von std::set
werden nur Iteratoren für das gelöschte Element ungültig gemacht. # 1
Sie können dieses Codebeispiel als Standardcode betrachten, um ein Element zu entfernen, auf das sich Ihr Iterator bezieht.
Referenzen:
Für std::set
,
# 1C++ 03 Standard-23.1.2/8:
Nur Iteratoren und Verweise auf die gelöschten Elemente werden ungültig gemacht