Application de la sémantique de déplacement pendant la croissance du vecteur
Lorsqu'un std::vector avec des éléments non triviaux ayant des constructeurs de copie et de déplacement définis se développe, le le comportement par défaut consiste à utiliser le constructeur de copie pour créer de nouvelles copies d'éléments. Pour imposer l'utilisation du constructeur de déplacement à la place, C doit être informé que ce constructeur ne lève pas d'exceptions.
Implémentation
Pour indiquer que le constructeur de déplacement peut être appelé en toute sécurité, déclarez-le avec le spécificateur nosauf :
A(A &&rhs) noexcept { std::cout << "i am the move constr" << std::endl; ... move-assignment code ... }
Avec cette modification, std::vector donnera la priorité à l'utilisation du constructeur de déplacement pour la croissance, garantissant les ressources des éléments existants sont déplacées au lieu d'être copiées.
Informations 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!