vector um n Stellen vergrößern
-
hallo,
mit
myVector.resize(20);stelle ich die größe des vector auf 20 felder.
mit
myVector.push_back();erweitere ich den vector um 1 Feld.
wie kann ich einen bestehenden vector um n Felder vergrößern, ohne das der bestehende Inhalt verloren geht ?
Gruß Siegfried
-
in einer temp Variablen zwischenspeichern und dann wieder in den neuen mittlerweile vergrößerten reinschreiben lassen, wenn das möglich ist.
-
Dieser Thread wurde von Moderator/in Jansen aus dem Forum VCL/CLX (Borland C++ Builder) in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hallo,
besteht also keine Möglichkeit, wenn der vector 100 einträge besitzt, diesen direkt aus 250 Felder zu erhöhen. Eine möglichkeit besteht, in einer Schleife mit "push_back" zu vergrößern.
Frage: welche Möglichkeit ist aus eueren Erfahrungen die schnellste?
in Temp kopieren, vergrößern und wieder zurückkopieren oder die "push_back" Version. Die Anzahl der Felder ist sehr unterschiedlich.Gruß Siegfried

Hallo @ Jansen
eine bescheidene Frage: haben vectoren nichts mit C++Builder zu tun ?
Gruß Siegfried
-
mVector.reserve (20);Wenn mVector weniger oder gleich 20 Elemente hat, dann hat dieser Aufruf keinen Effekt, ansonsten wird der Vektor entsprechend vergrößert.
-
Hallo,
habe ich das richtig verstanden?
mitmVector.reserve (100);kann ich von 20 auf 100 Elemente vergrößern, ohne das der bestehende Inhalt verloren geht ?
Gruß Siegfried

-
Hört sich reserve etwa so destruktiv an?
-
reserve erzeugt keine neuen Felder, sondern garantiert nur, dass die folgenden push_backs ohne Umkopieren ablaufen.
myVector.resize( myVector.size() + 10)erzeugt 10 neue Einträge (die alten bleiben erhalten), für die neuen Einträge wird der default constructor aufgerufen. Um einen anderen Wert an die neuen Plätze zu schreiben, kannst Du resize als zweiten Parameter den Wert übergeben.
-
Hallo,
Danke für diese schnelle Info. Werde es einbauen und ausprobieren.
Gruß Siegfried
