[...] Greift man über den Array-Operator überhaupt noch auf dieses Element zu? Wieso ist das dann noch im Vektor? Oder manipuliert man per erase() nur Iterator-Zugriffe?
Nur um das nochmal klar rauszustellen: Der Code ist absolut idiotisch, das hast du korrekt erkannt. Nach dem
erase() ist das Element nicht mehr im Vektor, das was da
deletet wird, ist irgendetwas unsinniges oder existiert nicht und führt direkt zum Crash.
Findet nach dem erase() nicht ne Reallokation statt, wenn man ein Element mittenraus löscht? [...]
Kann, muss aber nicht. Manche Implementierungen lassen Vektoren nur wachsen, aber nie schrumpfen. Andere Implementierungen schrumpfen ab und zu, nämlich immer wenn ein gewisser Grenzwert an unbenutztem Speicherplatz überschritten wird. Die Reallokation spielt in deinem Code-Fragment aber keine Rolle, da du nur per Indexzahl auf Elemente zugreifst. Grober Unfug ist der Code dennoch.
Beachte auch das, was die Vorredner schreiben. Kleine Korrektur zu dots Beitrag: Es werden nicht die ersten
array_num Elemente gelöscht, sondern nur das eine an Position
array_num.