Im Allgemeinen nicht unbedingt. Wenn Sie dem anderen einen Vektor zuweisen, lautet die Nachbedingung, dass beide Arrays am Ende der Operation äquivalente Objekte enthalten.
Wenn die capacity
des Zielvektors genug ist, kann der Vorgang durch Aufruf des Zuweisungsoperator auf dem Satz von min(v1.size(), v2.size())
Elementen erreicht werden, und dann entweder zerstörenden den Rest der Elemente, wenn der Zielvektor mehr Elemente gehalten wird, oder sonst copy-constructing die zusätzlichen Elemente am Ende. In diesem Fall wird keine Speicherfreigabe oder -zuweisung durchgeführt.
Wenn der Zielvektor nicht genügend Kapazität hat, erstellt er einen neuen Puffer mit genügend Kapazität und copy-construct die Elemente in dem neuen Puffer aus dem Quellvektor. Es wird dann den alten und den neuen Puffer austauschen, alle alten Objekte zerstören und den alten Puffer freigeben. In diesem Fall werden die alten Objekte zerstört und der alte Speicher freigegeben, aber das ist nur ein Fall.
Ja, es ist freigegeben. – tuxuday