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