首頁 > 後端開發 > C++ > `push_back` 與 `emplace_back`:什麼時候該使用哪一個?

`push_back` 與 `emplace_back`:什麼時候該使用哪一個?

Susan Sarandon
發布: 2024-12-29 17:22:10
原創
210 人瀏覽過

`push_back` vs. `emplace_back`: When Should You Use Which?

push_back 與emplace_back

在理解push_back 與emplace_back 之間的差異時,掌握Push_back 的各種重載之間的差異至各種重載關重要。

push_back重載

push_back 提供了三種重載,處理不同的資料型別與參考:

  • push_back(const Type_back(const Type& _Val):接收所提供資料類型的副本。
  • push_back(Type& _Val):處理對實際資料的參考type.
  • push_back(Type&& _Val):接受資料型別的右值參考。

emplace_back MSVC10 中的重載

在Microsoft Visual C 10 (MSVC10),emplace_back 有一個附加的重載:

  • emplace_back(Type&&& _Val):與push_back(Type&& _Val)重載相比,此重載本質上是多餘的,沒有獨特的功能。

C 0x 的 emplace_back 重載

正版emplace_back 的 C 0x定義顯著不同:

  • emplace_back(Args&&&...):此重載使容器能夠使用可變參數列表直接在其自身內部構造物件。

C 中 emplace_back 的優點0x

emplace_back 的 C 0x版本有幾個優點:

  • 直接物件建構:它直接在容器內建構一個對象,而不需要建立一個物件。首先是臨時對象。
  • 更快的效能:此方法繞過潛在的副本和移動​​,這在push_back可能引入不必要的副本或移動的複雜場景中特別有用。

結論

在C中,emplace_back是一個強大的功能除了Push_back 函數之外,該函數還可以使用參數的可變參數列表直接構造容器內的物件。雖然 MSVC10 提供了 emplace_back 的非一致性實現,但真正的 C 0x 實作提供了顯著的效能優勢,並允許更有效地在容器內建構物件。

以上是`push_back` 與 `emplace_back`:什麼時候該使用哪一個?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板