Maison >développement back-end >C++ >Quelles sont les implications de l'affectation automatique des vecteurs dans la bibliothèque standard C ?

Quelles sont les implications de l'affectation automatique des vecteurs dans la bibliothèque standard C ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-20 12:55:09357parcourir

What are the implications of self move assignment for vectors in the C   Standard Library?

Assignation de déplacement automatique dans la bibliothèque standard C

La bibliothèque standard C garantit certains comportements pour l'affectation de déplacement automatique, tels que définis dans la norme.

Plus précisément, la norme stipule que pour les fonctions de la bibliothèque standard avec des arguments de type T&&, l'implémentation peut supposer que le paramètre est une référence unique à l’argument. Cela signifie que la bibliothèque standard peut optimiser son comportement en partant de l'hypothèse que le paramètre est une valeur temporaire.

Dans le cas d'une affectation automatique, l'implémentation est autorisée à supposer que le vecteur d'argument est une valeur prédéfinie. Cela signifie que la bibliothèque standard peut effectuer des optimisations qui ne seraient pas possibles si l'argument était une lvalue.

Par conséquent, l'affectation d'un déplacement automatique dans la bibliothèque standard entraînera probablement le maintien du vecteur dans une ressource. -less, avec une capacité de 0. Si le vecteur a déjà une capacité de 0, l'affectation d'auto-déplacement sera un no-op.

Mise à jour

La dernière version de la norme C indique explicitement que dans les exigences de MoveAssignable, l'expression t = rv (où rv est une rvalue) nécessite uniquement que t soit équivalent à rv avant l'affectation si t et rv ne font pas référence au même objet. De plus, l'état de RV n'est pas spécifié après la mission.

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