Rumah > pembangunan bahagian belakang > C++ > Mengapakah `std::vector` dan `std::array` menggunakan sintaks yang berbeza untuk senarai pemula?

Mengapakah `std::vector` dan `std::array` menggunakan sintaks yang berbeza untuk senarai pemula?

Patricia Arquette
Lepaskan: 2024-11-08 12:18:02
asal
822 orang telah melayarinya

Why do `std::vector` and `std::array` use different syntax for initializer lists?

Memahami Gelagat Initializer_list Berbeza untuk std::vector dan std::array

Apabila menggunakan senarai pemula untuk memulakan bekas, mungkin telah melihat perbezaan dalam sintaks antara std::vector dan std::array. Semasa std::vector membuat permulaan menggunakan pendakap kerinting tunggal {}, std::array memerlukan pendakap kerinting berganda {{}}. Untuk memahami sebab perbezaan ini wujud, kami menyelidiki sifat asas bekas ini.

std::array: Agregat

Tidak seperti std::vector, yang mempunyai pembina yang ditentukan pengguna, std::array dianggap sebagai jenis agregat. Ini bermakna ia tidak mempunyai pembina yang diisytiharkan pengguna, termasuk yang menerima senarai pemula. Oleh itu, pemulaan std::array bergantung pada pemulaan agregat, ciri C yang diwarisi daripada C.

Pemulaan Agregat dalam C

Dalam C , pemulaan agregat boleh dilakukan dalam dua cara:

  1. Gaya Lama: Menggunakan sintaks =:, cth., std::array y = {{1, 2, 3, 4}};
  2. Permulaan Senarai Langsung: Melepasi terus senarai pemula, cth., std::array y{1, 2, 3, 4};

Dengan gaya lama, pendakap tambahan boleh ditiadakan apabila memulakan dalam pengisytiharan. Walau bagaimanapun, pilihan ini tidak tersedia untuk permulaan senarai langsung.

Perubahan Akan Datang

Kecacatan CWG #1270 berusaha untuk menangani sekatan ini, membenarkan penyingkiran pendakap dalam yang lain bentuk permulaan senarai. Jika diluluskan, sintaks berikut akan menjadi sah:

std::array y{1, 2, 3, 4};

Perubahan ini akan menghapuskan jurang semasa dalam sintaks antara std::vector dan std::array, memberikan konsistensi dalam amalan permulaan agregat.

Atas ialah kandungan terperinci Mengapakah `std::vector` dan `std::array` menggunakan sintaks yang berbeza untuk senarai pemula?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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