std::vector kopieren - verständnisfragen
-
Hallo,
ich möchte gern einen std::vector kopieren.
also so:
std::vector<double> a;
a.push_back(...)
...std::vector<double> b;
jetzt frage ich mich einfach nur:
b = a;
das bringt ja keine reine kopie oder? Zeigt da nicht der Pointer einfach
nur auf a? d.h wenn ich a nun veränder würde würde sich b mitverändern?aber auch sowas:
b(a);
bringt ja das gleiche oder? Hier nutzen halt beide wieder denselben speicherbereich oder?muss ich wirklich ne for schleife schreiben in der ich alle elemente rüberkopier mittels push_back ?
Danke für Hilfe
-
Beim std::vector gibt es keine Zeiger, dafür ist das Ding da. Eine Zuweisung tut genau das, was man von ihr erwarten sollte.
-
? eh die zuweisung a = b; legt einen kompletten unabhängigen vektor im speicher an?
-
Hallo
ja der Kopierkonstruktor des vectors (wie auch aller anderen STL-Container) legt eine genaue, unabhängige Kopie auch aller Elemente an.
Aber Achtung, sind die Elemente selber Pointer, dann werden wiederum nur die Adressen der Pointer kopiert, nicht aber die verwiesenen Instanzen.bis bald
akari
-
Kleine Kporrektur:
akari schrieb:
...sind die Elemente selber Pointer, dann werden wiederum nur die Adressen der
Instanzen kopiert, nicht die Instanzen selber.
Gruß,
Simon2.