Rumah >pembangunan bahagian belakang >C++ >Mengapa std::array Kurang Pembina Pengisian Nilai?
Kekurangan Pembina Pengisian Nilai dalam std::array: Satu Reka Bentuk Pengawasan atau Disengajakan?
Walaupun wujud kaedah pengisian dalam std::array yang membenarkan untuk memberikan nilai tunggal kepada semua elemen, ketiadaan pembina yang mengambil nilai sebagai hujah telah menimbulkan persoalan di kalangan pembangun. Walaupun bekas dinamik seperti std::vector menawarkan pembina sedemikian, mengapakah std::array kekurangan ciri ini?
Di sebalik Keputusan Reka Bentuk
std::array ialah direka sebagai agregat, bermakna ia tidak mempunyai sebarang pembina yang diisytiharkan pengguna. Agregat ialah struktur data yang hanya terdiri daripada ahli tanpa pembina yang ditentukan pengguna dan tiada kelas asas. Pembinaan mereka dikendalikan secara automatik oleh pengkompil.
Pembinaan Lalai dan Permulaan Agregat
Pembinaan lalai jenis agregat, seperti std::array, mengakibatkan ingatan tidak dimulakan. Tidak seperti kelas, pembinaan lalai tidak menggunakan pemulaan dari segi ahli. Jika jenis boleh dimulakan secara remeh, memori akan mempunyai nilai yang tidak tentu.
Pendekatan Alternatif
Untuk mengisi std::array dengan nilai tertentu, kaedah isian boleh digunakan selepas tatasusunan telah dibina secara lalai. Pembinaan lalai memulakan tatasusunan dengan nilai yang tidak dimulakan, dan bukannya menyifarkannya seperti dalam pembinaan biasa. Ini membolehkan pengisian dengan nilai bukan sifar seperti contoh memulakan semua elemen dengan -1.
Kesimpulan
Ketiadaan pembina pengisian nilai dalam std: :array bukanlah kelalaian tetapi keputusan reka bentuk yang disengajakan. Status std::array sebagai agregat menghalang pembina yang diisytiharkan pengguna, tetapi pembinaan lalai dan penggunaan kaedah isian seterusnya menyediakan cara alternatif untuk memulakan tatasusunan dengan satu nilai.
Atas ialah kandungan terperinci Mengapa std::array Kurang Pembina Pengisian Nilai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!