使用初始化器列表初始化容器時,一可能已經注意到std::vector 和std::array 之間的語法差異。 std::vector 使用單花括號 {} 進行初始化,而 std::array 則需要雙花括號 {{}}。為了理解為什麼會有這種區別,我們深入研究這些容器的基本屬性。
與 std::vector 不同, std::array 具有使用者定義的建構函數,被視為聚合類型。這意味著它缺少使用者宣告的建構函數,包括那些接受初始值設定項清單的建構函數。因此,std::array 的初始化依賴聚合初始化,這是從 C 繼承的 C 功能。
C 中,聚合初始化可以透過兩種方式執行:
直接傳遞初始化列表,例如std::array
CWG 缺陷 #1270 試圖解決此限制,允許在其他中省略大括號清單初始化的形式。如果獲得批准,以下語法將變得有效:
std::array
以上是為什麼 `std::vector` 和 `std::array` 對初始值設定項清單使用不同的語法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!