2D std::array 初始化受限的原因
雖然std::array 是一種非常簡潔的容器,但它在初始化2D 數組時存在一定限制。讓我們探討為什麼如下所示的簡單初始化無法正常運作:
std::array<std::array<int, 3>, 2> a { {1, 2, 3}, {4, 5, 6} };
錯誤:too many initializers for 'std::array<:array>, 2u>'
理解這個錯誤的關鍵在於std::array 本質上是包含C 陣列的資料結構。因此,要初始化 2D std::array,需要額外的花括號:
std::array<std::array<int, 3>, 2> a { {{1, 2, 3}}, // 内层花括号用于初始化 C 数组 {{4, 5, 6}} };
這種額外的花括號巢狀允許編譯器將初始化資料正確指派給 C 陣列成員。因此,即使 std::array 是一種 C 類,其初始化語法卻類似於 C 陣列。
以上是為什麼我不能像常規 2D 陣列一樣初始化 2D std::array?的詳細內容。更多資訊請關注PHP中文網其他相關文章!