順序容器的emplace操作

C++11新標準引入了三個新成員——emplace_front、emplace和emplace_back,對應於push_front、insert和push_back,允許我們將元素放置在容器頭部、一個指定位置或容器尾部。
這兩種操作的主要區別在於:emplace構造而不是拷貝元素
也就是說:

  • 當調用push或insert成員函數時,我們將元素類型的對象傳遞給他們,這些對象被拷貝到容器中(創建一個局部臨時對象,並將其壓入容器中。)
  • 而當我們調用一個emplace成員函數時,則是將參數傳遞給元素類型的構造函數,emplace成員使用這些參數子啊容器管理的內存空間中直接構造函數(在容器管理的內存空間中直接創建對象。)

綜上:
對於在容器中添加類的對象時, 相比於push_back,emplace_back可以避免額外類的複製和移動操作

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章