Jeśli v2
nie jest wystarczająco duży, otrzymasz przepełnienie bufora, jeśli używasz copy
, tak jak masz.
Można użyć iteratora z tylną wstawką, który wywoła funkcję push_back na v2
. Może to jednak prowadzić do wielokrotnych ponownych przydziałów w zależności od tego, jak duży jest v1
.
copy(v1.begin(), v1.end(), back_inserter(v2));
Lepiej pozwolić, aby vector
poprawnie zarządzać rzeczami. Operator przypisania robi to, co robi vector::assign
:
v2.assign(v1.begin(), v1.end());
Mam przeczucie, że operator przypisania jest realizowany pod względem vector::assign
.
Operator przypisania zrobi to, co trzeba. Sposób, w jaki napisałeś 'copy', zepsuje, jeśli' v1' jest większy niż 'v2'. – jrok
Jeśli 'v1' nie jest wymagany po kopii, mógłbyś po prostu' v2.swap (v1); '. – hmjd
Napisz, co chcesz zrobić. Jeśli chcesz przypisać jeden wektor do drugiego, napisz to. –