Un vecteur déplacé depuis est-il garanti d'être vide ?
En général, la norme C fournit des indications minimales sur l'état des objets après ils ont été déplacés. Comme indiqué dans N3485 17.6.5.15 [lib.types.movedfrom]/1 :
Les objets des types définis dans la bibliothèque standard C peuvent être déplacés depuis (12.8). Les opérations de déplacement peuvent être explicitement spécifiées ou implicitement générées. Sauf indication contraire, ces objets déplacés doivent être placés dans un état valide mais non spécifié.
Bien que cette disposition n'exclue pas le vecteur d'être soumis à ce comportement, elle laisse place à l'interprétation.
Comportement spécifique du vecteur
Il n'existe aucune exigence standard explicite qui exclut le vecteur d'être affecté par la règle générale pour les objets déplacés. Cependant, compte tenu des exigences de mise en œuvre du vecteur, les options sont limitées :
Constructeur de déplacement :
Opérateur d'affectation de déplacement :
Premier cas :
Cas deux :
Cas trois :
Conclusion :
Pour le constructeur de déplacement du vecteur, le vecteur déplacé depuis est toujours vide. Pour l'opérateur d'affectation de déplacement, le vecteur déplacé depuis est généralement vide, mais peut ne pas l'être dans certains scénarios spécifiques où les allocateurs ne sont pas compatibles et où T est MoveAssignable ou MoveInsertable.
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!