1. 程式人生 > >c++容器優化(以emplace 代替insert)

c++容器優化(以emplace 代替insert)

首先,以兩張事實來說話,圖一是emplace方法,7892條資料,debug下是1.14403秒。圖二是insert方法,7892條資料,debug下是2.17625秒。結果其實已經不言而喻了,推薦使用emplace方法。為什麼emplace方法比insert快呢?
圖一在這裡插入圖片描述首先,我們必須明確一個概念就是,容器中插入的元素永遠都不是元素本身,而是元素的一份copy。emplace其實就是呼叫了拷貝建構函式,在容器建立元素時,就直接根據需要插入的元素進行了構造。而insert,push_back等,先是構造了元素,在呼叫了過載運算子函式,對函式進行了賦值。所以比較耗時。故推薦使用emplace組的函式進行插入。
emplace族的三個函式:emplace_front(),emplace_back(),emplace()