【C++】emplace_back()和push_back()
為什么引入emplace_back?
避免了內(nèi)存的拷貝和移動,提升了容器插入元素的性能。
主要區(qū)別
調(diào)用 push_back 或者 insert 函數(shù)的時候,是把 元素類型 的 對象 傳遞給他們,這些對象被拷貝到容器中.? 而調(diào)用 emplace_back 時候,則是把相應的 參數(shù) 傳遞給 元素類型的 構(gòu)造函數(shù),這樣emplace_back能通過參數(shù)原地(直接在容器中)構(gòu)造對象,不需要拷貝操作
通俗點講:emplace_back函數(shù)的作用是減少對象拷貝和構(gòu)造次數(shù),是C++11中的新特性。在使用push_back函數(shù)往容器中增加新元素時,要有一個該對象的實例才行,而emplace_back可以不用,它可以直接傳入對象的構(gòu)造函數(shù)參數(shù)直接進行構(gòu)造,減少一次拷貝和賦值操作。
例子
標簽: