Maison > développement back-end > C++ > `std::vector::resize()` et `boost::container::vector::resize()` présentent-ils un comportement d'initialisation zéro cohérent dans les normes C ?

`std::vector::resize()` et `boost::container::vector::resize()` présentent-ils un comportement d'initialisation zéro cohérent dans les normes C ?

Patricia Arquette
Libérer: 2024-12-04 08:45:12
original
765 Les gens l'ont consulté

Does `std::vector::resize()` and `boost::container::vector::resize()` Exhibit Consistent Zero-Initialization Behavior Across C   Standards?

Le comportement de Vector::resize() est-il cohérent sous C 11 et Boost.Container ?

Le comportement de std::vector:: resize() est couramment utilisé pour mettre temporairement les données en mémoire tampon, en les redimensionnant à la taille appropriée avant utilisation. En C 03, std::vector::resize() a créé de nouveaux éléments en les copiant, mais C 11 a introduit une surcharge qui initialise les nouveaux éléments sans copier.

Boost.Container fournit une surcharge default_init supplémentaire pour boost:: containers::vector::resize(), qui initialise les nouveaux éléments avec les valeurs par défaut. Cette fonctionnalité s'aligne sur la philosophie de conception de C 11 consistant à ne payer que pour ce dont vous avez besoin.

Après avoir testé le comportement de std::vector et boost::container::vector dans les modes C 03 et C 11, des résultats inattendus ont été observés. Dans C 03 et C 11, le redimensionnement du vecteur sans spécifier l'initialisation entraînait toujours une initialisation nulle des nouveaux éléments pour std::vector et boost::container::vector.

Ce comportement indique que l'interface change dans std::vector n'a aucun effet sur l'implémentation, et les éléments finaux ajoutés dans resize() sont toujours initialisés avec des zéros. La question soulevée est de savoir si ce comportement est correct.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal