Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah `vector::resize()` Berkelakuan Berbeza dalam C 03 dengan Perpustakaan Kontena Standard dan Boost?

Bagaimanakah `vector::resize()` Berkelakuan Berbeza dalam C 03 dengan Perpustakaan Kontena Standard dan Boost?

Susan Sarandon
Susan Sarandonasal
2024-12-01 08:04:10695semak imbas

How Does `vector::resize()` Behave Differently in C  03 with Standard and Boost Container Libraries?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn