首頁  >  文章  >  後端開發  >  為什麼我不能在 C 中對 2D `std::array` 使用簡單大括號初始化?

為什麼我不能在 C 中對 2D `std::array` 使用簡單大括號初始化?

Linda Hamilton
Linda Hamilton原創
2024-11-21 11:51:11416瀏覽

Why Can't I Use Simple Brace Initialization for 2D `std::array`s in C  ?

為什麼 2D std::array 無法進行大括號初始化?

在C 中,您可以使用std::array 定義一個簡單的2D 數組,如範例:

std::array<std::array<int, 3>, 2> a = {
    {1, 2, 3},
    {4, 5, 6}
};

但是,此初始化失敗並出現編譯器錯誤,指出初始化程序太多。造成這種差異的原因在於 std::array 。是封裝 C 樣式數組的聚合類別。

為了正確初始化,C 類及其包含的C 數組需要單獨的大括號:

std::array<std::array<int, 3>, 2> a = { {{{1, 2, 3}}, {{4, 5, 6}}} };

在此更正的程式碼中:

  • 最外層的大括號初始化std::array 類別。
  • 巢狀的大括號初始化類別中的 C 風格陣列。

透過符合 C 和 C 語法之間的大括號結構,您可以在 C 中使用大括號初始化成功初始化多維數組。

以上是為什麼我不能在 C 中對 2D `std::array` 使用簡單大括號初始化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn