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
Lepaskan: 2024-12-01 08:04:10
asal
767 orang telah melayarinya

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan