Est-ce que std::vector copie des objets sur push_back() ?
Après des enquêtes utilisant Valgrind, un utilisateur a conclu que std::vector crée copies d'objets lors de l'exécution de push_back(). Cela soulève la question :
Std::vector ne peut-il pas stocker des références ou des pointeurs sans copier ?
Malheureusement, la réponse est affirmative. std::vector::push_back(), tel que conçu, crée une copie de l'objet passé en argument et la stocke dans le vecteur.
Alternatives pour éviter la copie :
Si le comportement souhaité est de stocker des pointeurs ou des références au lieu de copies, envisagez d'utiliser un std::vector
Attention :
Lorsque vous utilisez des pointeurs ou des références, assurez-vous que les objets référencés restent valides tout au long la durée de vie du vecteur. L'utilisation de pointeurs intelligents qui utilisent l'acquisition de ressources avec initialisation (RAII) peut résoudre efficacement ce problème.
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!