Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah `vector::resize()` Berkelakuan Berbeza dalam C 03 dengan Perpustakaan Kontena Standard dan Boost?
C 11 vector::resize() Gelagat dengan Standard and Boost Container Library
vector::resize() menjalani baik pulih dalam C 11 untuk menyediakan kawalan yang lebih terperinci ke atas permulaan elemen. Walau bagaimanapun, kebimbangan telah dibangkitkan mengenai kelakuannya di bawah kedua-dua perpustakaan standard dan Boost.Container dalam mod C 03.
Perpustakaan Standard
Vektor::resize() fungsi dalam perpustakaan standard sebelum C 11 membenarkan permulaan elemen dengan menghantar nilai. Walau bagaimanapun, dalam C 11, fungsi itu dibahagikan kepada dua beban lampau: satu untuk permulaan nilai dan satu untuk permulaan melalui salinan.
Boost.Container
Boost.Container juga menyediakan tiga lebihan vektor::resize(): permulaan nilai, permulaan lalai (ciri khusus Boost) dan permulaan melalui copy.
Pemerhatian
Ujian baru-baru ini mendedahkan bahawa tingkah laku resize() dalam kedua-dua perpustakaan standard dan Boost.Container tidak konsisten dengan jangkaan dalam mod C 03. Walaupun resize() sepatutnya berkelakuan sama pada ketiga-tiga ujian (nilai, lalai dan pemulaan salin), keputusan menunjukkan bahawa hanya ujian yang secara khusus meminta pemulaan lalai menghasilkan output yang diingini.
Kesimpulan
Percanggahan dalam tingkah laku menunjukkan bahawa perubahan antara muka vektor::resize() dalam C 11 mungkin belum diambil sepenuhnya kesan, kerana elemen tambahan dalam panggilan ubah saiz() akhir masih dimulakan dengan sifar dalam ujian standard dan Boost.Container tanpa permulaan lalai yang eksplisit. Siasatan lanjut diperlukan untuk menentukan sebab tingkah laku ini.
Atas ialah kandungan terperinci Bagaimanakah `vector::resize()` Berkelakuan Berbeza dalam C 03 dengan Perpustakaan Kontena Standard dan Boost?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!