Iterator std::vector
-
Chew-Z schrieb:
vv.erase(vv.begin()+4);
In der Annahme das du sicher weisst das das fünfte Element auch existiert.
hehe, ja das weiss ich. Vielen Dank für die prompte Antwort!
Gruss
Sam
-
Ahc mensch, jetzt hab ich doch noch was vergessen
(da es mit dem erase von std::vector zu tun hat, mach ich mal keinen neuen Thread auf).
Wenn ich einen Eintrag im vector lösche, werden dann die nachfolgenden Einträge eigentlich eingeschoben, oder verweilen sie an ihren Plätzen? (mir wäre das erstere natürlich lieber
)
Thx again
-
erste......
-
Hi,
sie werden nachgeschoben, aber du solltest dir überlegen, wenn du viel löscht und einfügst, ob nicht std::list günstiger ist:
http://www.cppreference.com/cpplist/Und zu beachten ist, dass sämtliche Iteratoren ungültig werden, wenn du per erase etwas aus einem Vector löscht.
-
CarstenJ schrieb:
Hi,
sie werden nachgeschoben, aber du solltest dir überlegen, wenn du viel löscht und einfügst, ob nicht std::list günstiger ist:
http://www.cppreference.com/cpplist/Danke, ich benötige jedoch den vector. Aber merk ich mir fürs nächste mal.
Und zu beachten ist, dass sämtliche Iteratoren ungültig werden, wenn du per erase etwas aus einem Vector löscht.
Ah, gut zu wissen! Danke auch dafür.
Sam
-
Katachi schrieb:
Danke, ich benötige jedoch den vector. Aber merk ich mir fürs nächste mal.
Und warum wenn ich fragen darf ?
-
kann ja nur wegen dem index-zugriff sein.
-
Chew-Z schrieb:
Katachi schrieb:
Danke, ich benötige jedoch den vector. Aber merk ich mir fürs nächste mal.
Und warum wenn ich fragen darf ?
Hehe
Weil ich ca. 30 Klassen sonst umschreiben müsste und meine Deadline mir sagt "Sam, das schaffst du doch nicht mehr zeitig.". Ja, ja, die Zeit ist der beste Überredenskünstler.
(deswegen auch "für´s nächste mal"
)
-
ROFLMAO
:p
-
Da scih List und Vector aber genau gleich benutzen lassen, kannst du ja eifnahc mla mit suchen/ersetzen über deinen quellcode und die namen schenll austauschne und fertig ist!
-
Katachi! Die Container arbeiten alle gleich, d.h. du mußt nur den Typ an einer Stelle ändern (z.B. std::list anstatt std::vector).
Alternativ kannst du natürlich auch eine Art "Gelöscht"-Flag in deine Klasse definieren. D.h. du löscht das Objekt nicht wirklich, sondern markierst es nur als gelöscht. Heißt aber wieder ein paar if-Abfragen mehr. Eher unschön.
Wie groß wird denn so ein Vector im Durschnitt? Wenn es 5 Elemente oder so sind, ist das egal ob du Vector oder List hast. Wenns größere Ausmasse annimmt, wirds langsam mit dem umkopieren.