使用大括號初始化2D std::array
使用C 時,使用大括號初始化2D std::array 可能具有挑戰性。以下程式碼片段說明了這個問題:
std::array<std::array<int, 3>, 2> a { {1, 2, 3}, {4, 5, 6} };
此方法無法編譯,編譯器錯誤指示std::array<:array>, 2u> 的初始值設定項太多。要理解為什麼會發生這種情況,了解 std::array 的底層實作至關重要。
std::array 內部
std::array 是一個聚合,包含一個 C 風格的陣列。因此,要正確初始化它,需要類別本身的外大括號和C 陣列成員的內大括號:
std::array<int, 3> a1 = { { 1, 2, 3 } };
將此邏輯擴展到2D 陣列會導致以下有效初始化:
std::array<std::array<int, 3>, 2> a2 { { { {1, 2, 3} }, { { 4, 5, 6} } } };
在此範例:
以上是如何在 C 中使用大括號正確初始化 2D `std::array`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!