Sebab untuk permulaan terhad 2D std::array
Walaupun std::array adalah bekas yang sangat ringkas, ianya Ada yang tertentu sekatan apabila memulakan tatasusunan 2D. Mari kita terokai mengapa permulaan mudah seperti berikut tidak berfungsi:
std::array<std::array<int, 3>, 2> a { {1, 2, 3}, {4, 5, 6} };
Ralat: terlalu banyak pemula untuk 'std::array
Kunci untuk memahami ralat ini ialah std::array pada asasnya ialah struktur data yang mengandungi tatasusunan C. Oleh itu, untuk memulakan 2D std::array, pendakap kerinting tambahan diperlukan:
std::array<std::array<int, 3>, 2> a { {{1, 2, 3}}, // 内层花括号用于初始化 C 数组 {{4, 5, 6}} };
Penyarang pendakap kerinting tambahan ini membenarkan pengkompil untuk menetapkan data permulaan dengan betul kepada ahli tatasusunan C. Oleh itu, walaupun std::array ialah kelas C, sintaks permulaannya adalah serupa dengan tatasusunan C.
Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Memulakan std::array 2D Seperti Tatasusunan 2D Biasa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!