Application de la sémantique de déplacement lors de l'expansion du vecteur
Dans les situations où un std::vector contient des objets avec des constructeurs de copie et de déplacement, cela peut être Il est souhaitable d'imposer l'utilisation du constructeur de déplacement à mesure que le vecteur se développe. Cela garantit une gestion efficace de la mémoire et évite les copies inutiles.
Problème :
Un std::vector d'objets de classe A utilisera le constructeur de copie A( const A& ) en augmentant sa taille via push_back. Cependant, il est souhaité d'exploiter le constructeur de déplacement A(A&&) à la place.
Solution :
Pour permettre l'utilisation du constructeur de déplacement pendant l'expansion vectorielle, ce qui suit des étapes sont nécessaires :
Exemple :
Le code suivant démontre un Implémentation du constructeur de déplacement reconnue par std::vector:
A(A &&rhs) noexcept { std::cout << "i am the move constr" << std::endl; ... some code doing the move ... m_value=std::move(rhs.m_value) ; // etc... }
En déclarant et en implémentant le constructeur de déplacement comme nosauf, std::vector pourra l'utiliser lors de l'augmentation de sa taille.
Considérations supplémentaires :
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!