Adakah Vektor::resize() Kelakuan Konsisten Di Bawah C 11 dan Boost.Container?
Tingkah laku std::vector:: resize() biasanya digunakan untuk menimbal data sementara, mengubah saiznya kepada saiz yang sesuai sebelum digunakan. Dalam C 03, std::vector::resize() mencipta elemen baharu dengan menyalin, tetapi C 11 memperkenalkan lebihan yang memulakan elemen baharu tanpa menyalin.
Boost.Container menyediakan lebihan default_init tambahan untuk rangsangan:: container::vector::resize(), yang memulakan elemen baharu dengan nilai lalai. Ciri ini sejajar dengan falsafah reka bentuk C 11 iaitu hanya membayar untuk apa yang anda perlukan.
Setelah menguji kelakuan std::vector dan boost::container::vector di bawah kedua-dua mod C 03 dan C 11, hasil yang tidak dijangka telah diperhatikan. Dalam kedua-dua C 03 dan C 11, mengubah saiz vektor tanpa menyatakan pemulaan masih menghasilkan sifar permulaan elemen baharu untuk kedua-dua std::vector dan boost::container::vector.
Tingkah laku ini menunjukkan bahawa antara muka berubah dalam std::vector tidak mempunyai kesan ke atas pelaksanaan, dan elemen akhir yang ditambahkan dalam resize() masih dimulakan dengan sifar. Isu yang dibangkitkan ialah sama ada tingkah laku ini betul.
Atas ialah kandungan terperinci Adakah `std::vector::resize()` dan `boost::container::vector::resize()` Mempamerkan Gelagat Pemulaan Sifar yang Konsisten Merentas Piawaian C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!