首頁  >  文章  >  後端開發  >  為什麼 `std::vector` 和 `std::array` 需要不同的初始化語法?

為什麼 `std::vector` 和 `std::array` 需要不同的初始化語法?

Susan Sarandon
Susan Sarandon原創
2024-11-06 21:09:021007瀏覽

Why Do `std::vector` and `std::array` Require Different Initialization Syntaxes?

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

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