Maison >développement back-end >C++ >Quel est l'état d'un vecteur déplacé en C ?
État vide des vecteurs déplacés
Dans les types de bibliothèques standard C, les objets déplacés sont généralement placés dans un état valide mais non spécifié . Cependant, il est curieux de savoir si les vecteurs relèvent explicitement de cette règle.
Comportement du constructeur de déplacement
Pour le constructeur de déplacement du vecteur, le vecteur déplacé depuis est systématiquement vide en raison de l’exigence d’une complexité constante. Le constructeur vole les ressources du vecteur source pour construire la nouvelle instance, laissant le vecteur d'origine dans un état vide.
Comportement de l'opérateur d'affectation de déplacement
Le comportement du déplacement du vecteur L'opérateur d'affectation est plus nuancé et dépend de l'allocateur :
Cas 1 : Propager l'affectation de déplacement = Vrai
Dans ce cas, le vecteur déplacé sera toujours vide. L'opérateur d'affectation détruit les éléments, libère la capacité, transfère la propriété du tampon mémoire du vecteur source et déplace les allocateurs. Cela laisse le vecteur d'origine dans un état vide.
Cas 2 : propagation de l'affectation de déplacement = faux, allocateurs égaux
Semblable au cas 1, le vecteur déplacé depuis est vidé par l’opérateur d’affectation de déplacement. Les allocateurs ne sont pas déplacés et la distinction des cas se produit de manière dynamique.
Cas 3 : propagation de l'affectation de déplacement = allocateurs faux et inégaux
Le cas le plus complexe implique différents allocateurs. Ici, l'affectation de déplacement ne peut pas déplacer de ressources ni affecter d'allocateurs. Au lieu de cela, il déplace les éléments individuels du vecteur source vers le vecteur de destination. En fonction des capacités de l'allocateur et des exigences de construction des éléments, le vecteur déplacé n'est pas nécessairement vide. Cependant, certaines implémentations peuvent choisir d'appeler explicitement clear() sur le vecteur source, en le laissant vide.
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!