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
Lepaskan: 2024-11-22 06:28:11
asal
505 orang telah melayarinya

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}
};
Salin selepas log masuk

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}}
};
Salin selepas log masuk

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!

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