Ist mir garantiert, dass Zeiger auf std :: vector-Elemente gültig sind, nachdem der Vektor verschoben wurde?
Betrachtet man dieses Beispiel:
std::vector<int> v1 = { 1, 2, 3 };
const int* i = &v1[1];
std::vector<int> v2(std::move(v1));
std::cout << *i << std::endl;
Auch wenn dies in vielen STL-Implementierungen wahrscheinlich funktionieren wird, wird mir durch den Standard garantiert, dass keine Neuzuweisungen durchgeführt werden, wenn astd::vector
wird verschoben und der interne Puffer gesichertv2
ist das Gleiche wie früherv1
? Ich konnte diese Informationen weder im Internet noch im Standard selbst finden.