Heim > Backend-Entwicklung > C++ > Zeigen „std::vector::resize()' und „boost::container::vector::resize()' ein konsistentes Null-Initialisierungsverhalten über alle C-Standards hinweg?

Zeigen „std::vector::resize()' und „boost::container::vector::resize()' ein konsistentes Null-Initialisierungsverhalten über alle C-Standards hinweg?

Patricia Arquette
Freigeben: 2024-12-04 08:45:12
Original
771 Leute haben es durchsucht

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

Ist das Verhalten von Vector::resize() unter C 11 und Boost.Container konsistent?

Das Verhalten von std::vector:: resize() wird häufig zum vorübergehenden Puffern von Daten verwendet, um deren Größe vor der Verwendung auf die entsprechende Größe zu ändern. In C 03 erstellte std::vector::resize() neue Elemente durch Kopieren, aber C 11 führte eine Überladung ein, die neue Elemente ohne Kopieren initialisiert.

Boost.Container bietet eine zusätzliche default_init-Überladung für boost:: container::vector::resize(), das neue Elemente mit Standardwerten initialisiert. Diese Funktion steht im Einklang mit der Designphilosophie von C 11, nur für das zu bezahlen, was Sie brauchen.

Beim Testen des Verhaltens von std::vector und boost::container::vector sowohl im C 03- als auch im C 11-Modus zeigten sich unerwartete Ergebnisse wurden beobachtet. Sowohl in C 03 als auch in C 11 führte die Größenänderung des Vektors ohne Angabe der Initialisierung immer noch dazu, dass keine neuen Elemente für std::vector und boost::container::vector initialisiert wurden.

Dieses Verhalten weist darauf hin, dass sich die Schnittstelle geändert hat in std::vector hat keinen Einfluss auf die Implementierung und die letzten in resize() hinzugefügten Elemente werden weiterhin mit Nullen initialisiert. Es stellt sich die Frage, ob dieses Verhalten korrekt ist.

Das obige ist der detaillierte Inhalt vonZeigen „std::vector::resize()' und „boost::container::vector::resize()' ein konsistentes Null-Initialisierungsverhalten über alle C-Standards hinweg?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage