Rumah >pembangunan bahagian belakang >C++ >Mengapa Saya Tidak Boleh Memulakan std::array 2D Seperti Tatasusunan 2D Biasa?

Mengapa Saya Tidak Boleh Memulakan std::array 2D Seperti Tatasusunan 2D Biasa?

Patricia Arquette
Patricia Arquetteasal
2024-11-22 06:28:11527semak imbas

Why Can't I Initialize a 2D std::array Like a Regular 2D Array?

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, 2u>'

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!

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