首頁 > 後端開發 > C++ > 為什麼我不能像常規 2D 陣列一樣初始化 2D std::array?

為什麼我不能像常規 2D 陣列一樣初始化 2D std::array?

Patricia Arquette
發布: 2024-11-22 06:28:11
原創
495 人瀏覽過

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

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板