C 11 vector::resize() 標準和Boost 容器庫的行為
vector::resize() 在C 中進行了大修11 提供對元素初始化的更精細的控制。然而,人們對其在 C 03 模式下的標準函式庫和 Boost.Container 下的行為提出了擔憂。
標準函式庫
向量::resize() C 11 之前的標準函式庫中的函式允許透過傳遞值來初始化元素。然而,在 C 11 中,該函數被分成兩個重載:一個用於值初始化,另一個用於透過複製進行初始化。
Boost.Container
Boost.Container 也提供了 vector::resize() 的三種重載:值初始化、預設初始化(Boost特定功能)和透過以下方式初始化
觀察
最近的測試表明,標準庫和Boost.Container 中的resize() 行為與C 03 模式下的預期不一致。雖然理想情況下 resize() 在所有三個測試(值、預設和複製初始化)中的行為應該相同,但結果表明,只有專門請求預設初始化的測試才會產生所需的輸出。
結論
行為上的差異表明C 11 中的vector::resize() 介面變更可能尚未完全生效,因為在標準和Boost.Container 測試中,最終的resize() 呼叫仍然使用零進行初始化,而沒有明確的預設初始化。需要進一步調查以確定此行為的原因。
以上是`vector::resize()` 在 C 03 中與標準和 Boost 容器庫的行為有何不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!