std::vector
fait partie de la STL, de sorte que toute description de std::vector
fera. L'implémentation sous-jacente peut différer légèrement, mais toutes les versions conformes de STL doivent fournir la même interface et les mêmes garanties pour std::vector
. Je ne trouve pas dans rapidement sur MSDN, mais voici deux de ces descriptions de operator=
:
- http://www.cplusplus.com/reference/stl/vector/operator=/
- http://www.sgi.com/tech/stl/Vector.html
Maintenant, la deuxième partie de votre question me déconcerte. Que voulez-vous operator=
à faire sur un vecteur si ce n'est pas "copier tout de A dans B"? Dans votre exemple, votre question était «comment vous assurer que l'ancien v est supprimé?». Je peux interpréter cela de deux façons: Vous demandez peut-être «comment puis-je savoir que cette affectation v = vector<double>(200,2)
remplacera le contenu de v
et ne s'y ajoutera pas?». La réponse est que vous le savez parce que c'est la définition de la façon dont fonctionne operator=
pour les conteneurs STL. Toute implémentation conforme aux normes est garantie de fonctionner de cette manière.
Vous pourriez également demander "ce qui arrive au contenu de v
quand je les écrase en utilisant l'affectation v = vector<double>(200,2)
?" La réponse est qu'ils sont désalloués, et s'ils sont des objets, leurs destructeurs sont appelés. Notez la distinction importante que si le vecteur contient pointeurs à objets, les pointeurs eux-mêmes sont désalloués, mais pas ce qu'ils pointent vers. Si je n'ai pas répondu à votre question, veuillez essayer de la clarifier.
Pourquoi ne faites-vous pas simplement une recherche? Il est répertorié sous "opérateurs vectoriels" avec 'operator []': http://msdn.microsoft.com/en-us/library/dd673471(v=VS.100).aspx –
Vous venez de poser cette question. Pourquoi ne modifiez-vous pas votre ancienne question et ne la marquez pas? Aussi, voir le commentaire que j'ai laissé sur votre autre question. Vous vous inquiétez trop, laissez vecteur faire son travail; ça va tout effacer, je le promets. Je vote pour fermer en double. – GManNickG
Allez! La raison pour laquelle je pose cette question est parce qu'il n'y a aucun opérateur = pour le vecteur dans MSDN, qui m'a confondu. – 8888q8888