為什麼 std::Vector 和 std::Array 初始值設定項目清單的行為不同?
初始化 std::vector 的物件時和 C 中的 std::array 資料結構,它們的語法有明顯的差異。 std::vector 可以用大括號初始化,如:
std::vector<int> x{1,2,3,4};
但是,當涉及std::arrays 時,需要雙大括號:
std::array<int, 4> y{{1,2,3,4}};
原因因為這種差異源自於這些資料結構的根本性質。 std::arrays 是聚合-沒有使用者定義建構子的對象,甚至是明確採用std::initializer_list的物件。
使用大括號對std::arrays進行初始化因此屬於聚合初始化,繼承自C。在聚合初始化中,使用=:的「舊樣式」:
std::array<int, 4> y = { { 1, 2, 3, 4 } };
此語法允許省略「形式宣告」中的額外大括號T x = { a };」。但是,此規則不會擴展到其他形式的列表初始化,包括第二個程式碼片段中使用的列表初始化。將擴展為包括其他列表初始化形式,可能使以下語法成為有效語法:
以上是為什麼 `std::vector` 和 `std::array` 需要不同的初始化語法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!