Hallo,
ich hab bisher std::move noch nicht genutzt daher kurze Verständnisfrage. In meinem Code unten bekommt theoretisch vec2 die Daten von vec1. Anhand der size sieht man, dass es funktioniert. Ich traue allerdings dem Braten jetzt noch nicht so ganz, bringt in diesem Fall std::move wirklich die Performance bzw ist das jetzt wirklich ganz ohne Kopieren? Ist es richtig, dass der lvalue der zur verschiebenden Daten dann im RAM an Ort und Stelle bleibt und nur der Pointer "beklaut" wird? Welchen Pointer/Speicherort bekommt dann eigentlich vec1 nachdem er beklaut wurde?
ich hab bisher std::move noch nicht genutzt daher kurze Verständnisfrage. In meinem Code unten bekommt theoretisch vec2 die Daten von vec1. Anhand der size sieht man, dass es funktioniert. Ich traue allerdings dem Braten jetzt noch nicht so ganz, bringt in diesem Fall std::move wirklich die Performance bzw ist das jetzt wirklich ganz ohne Kopieren? Ist es richtig, dass der lvalue der zur verschiebenden Daten dann im RAM an Ort und Stelle bleibt und nur der Pointer "beklaut" wird? Welchen Pointer/Speicherort bekommt dann eigentlich vec1 nachdem er beklaut wurde?
C++:
std::vector<int> vec1(10000,1);
std::vector<int> vec2;
vec2 = std::move(vec1);