Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah `std::vector::resize()` dan Boost.Container's C 11 Mengendalikan Elemen Tidak Dimulakan?
Gelagat Vektor dalam C 11 dan Boost.Bekas: Mengendalikan Elemen Tidak Dimulakan
Dalam aplikasi C, vektor biasanya digunakan sebagai penimbal sementara. Untuk memastikan kapasiti yang mencukupi, vektor-vektor ini sering menjalani operasi saiz semula. Dalam C 03, fungsi std::vector
C 11 memperkenalkan dua lebihan resize():
Boost.Container melanjutkan lagi fungsi ini dengan lebihan tambahan:
Untuk mengesahkan tingkah laku ini fungsi, ujian telah dijalankan menggunakan C 11 std::vector
Gelagat Yang Dijangka
Untuk C 03 std::vector
Hasil Sebenar
Yang mengejutkan, keputusan ujian mendedahkan bahawa kedua-dua std::vector
Penjelasan
Tingkah laku yang tidak dijangka ini menunjukkan bahawa antara muka ubah saiz() perubahan yang diperkenalkan dalam C 11 tidak mempunyai kesan praktikal dalam senario yang diberikan. Fungsi C 03 std::vector
Implikasi
Jika anda perlu mengelak daripada memulakan elemen yang tidak digunakan dengan sifar, anda boleh menggunakan pengalokasi tersuai yang memintas kaedah construct() std::allocator dan menggantikan permulaan nilai dengan permulaan lalai. Walau bagaimanapun, teruskan dengan berhati-hati, kerana menggunakan ini pada semua permulaan boleh membawa kepada akibat yang tidak diingini.
Atas ialah kandungan terperinci Bagaimanakah `std::vector::resize()` dan Boost.Container's C 11 Mengendalikan Elemen Tidak Dimulakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!