std::array 大小和記憶體佈局的保證語義
在C 11 中,std::array 提供的連續儲存和效能與常規數組。然而,標準對 std::array 的要求提出了一個問題:它是否一定具有與等效數組相同的大小和記憶體佈局?
根據 C 標準的 §23.3.2.1/2,std: :array 是使用初始值設定項目清單初始化的聚合。由於聚合不能使用建構函數來轉換數據,因此初始化列表必須直接表示儲存在數組中的值。
這表示 std::array 的大小必須由其中指定的元素數量決定模板參數。此外,記憶體佈局應與數組的記憶體佈局相同,沒有任何輔助資料或填充。
雖然標準沒有明確說明此要求,但 std::array 的聚合性質強烈暗示了這項要求以及連續儲存的要求。
這意味著 sizeof(std::array
實際上,編譯器和實作通常會遵循這種預期行為。然而,值得注意的是,該標準並未嚴格執行,因此存在不合規實施的可能性。
以上是`std::array` 是否保證與常規 C 陣列具有相同的大小和記憶體佈局?的詳細內容。更多資訊請關注PHP中文網其他相關文章!