Maison  >  Article  >  développement back-end  >  Est-ce que std::vector copie les objets sur Push_back() ?

Est-ce que std::vector copie les objets sur Push_back() ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-04 04:44:01412parcourir

Does std::vector Copy Objects on Push_back()?

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 ou 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn