C++——順序容器的emplace操作

經常使用STL的同學肯定對push_frontpush_backinsert不會陌生。我們對容器進行插入操作經常要用到這三個函數,來將元素放置在容器頭部、指定位置或容器尾部。

C++11新標準引入了三個新函數——emplace_frontemplaceemplace_back來代替上述三個函數。

這兩種操作的主要區別在於:emplace使用構造函數而不是拷貝函數

也就是說:

調用push或insert函數後,會先創建一個局部臨時對象,並使用拷貝函數給該臨時對象賦值,並將其壓入容器中。而調用emplace函數後,則會在容器管理的內存空間中直接調用構造函數創建對象。

由於emplace避免了對象的複製和移動,因此其插入的效率會更高。

所以在我們對容器內插入大對象的時候,應當優先考慮使用emplace方法。

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