Maison >développement back-end >C++ >Quand un vecteur déplacé n'est-il pas vide ?

Quand un vecteur déplacé n'est-il pas vide ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-01 11:17:14991parcourir

When Is a Moved-From Vector Not Empty?

Un vecteur déplacé depuis est-il toujours vide ?

Question :

C'est connu à partir duquel les objets des types de bibliothèques standard peuvent être déplacés, et bien que les opérations de déplacement puissent laisser les objets déplacés dans un état non spécifié, il n'y a pas d'exigences explicites excluant le vecteur de ceci. Cependant, comment est-il possible que les vecteurs déplacés soient dans un état non vide ?

Réponse :

Généralement, un vecteur déplacé sera vide , mais ce n'est pas toujours le cas.

Cas spécifiques :

Le comportement d'un vecteur déplacé de dépend de l'opération utilisée (constructeur de déplacement ou affectation de déplacement) et de l'allocateur associé au vecteur.

Constructeur de déplacement :

</p> <p>Dans ce cas, le vecteur déplacé depuis sera toujours vide. L'opération de déplacement nécessite une complexité constante, nécessitant le transfert de propriété d'un vecteur à un autre, laissant le premier vide.</p> <p><strong>Affectation de déplacement :</strong></p> <p><pre class="brush:php;toolbar:false">vecteur& opérateur =(vecteur&& v)

Il existe trois scénarios pour considérez :

  1. Propagation de l'allocateur activée : Le vecteur déplacé depuis sera toujours vide.
  2. Propagation de l'allocateur désactivée et allocateurs égaux : Le comportement est similaire au premier scénario, laissant le vecteur déplacé de vide.
  3. Propagation de l'allocateur désactivée et allocateurs différents : Le vecteur déplacé de peut conserver ses éléments. L'opération d'affectation de déplacement est obligée d'utiliser des opérations de déplacement individuelles pour transférer des éléments, laissant potentiellement les éléments d'origine intacts.

Il convient de noter que certaines implémentations peuvent choisir d'effacer explicitement le vecteur déplacé dans ce scénario, mais ce n'est pas une exigence.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn