vector中emplace back方法的用途

2021-10-21 22:53:09 字數 971 閱讀 4351

在寫**的過程中,clion提醒我把push_back方法替換成emplace_back方法:

emplace_back函式的作用是減少物件拷貝和構造次數,是c++11中的新特性,主要適用於對臨時物件的賦值。

在使用push_back函式往容器中增加新元素時,必須要有乙個該物件的例項才行,而emplace_back可以不用,它可以直接傳入物件的構造函式引數直接進行構造,減少一次拷貝和賦值操作。

例如以下學生類:

class stu_info 

~stu_info()

stu_info(const stu_info &s)

};

使用push_back插入元素的辦法:

vectorv;

v.push_back(stu_info("nginx"));

在push_back之前,必須使用stu_info例項乙個臨時物件傳入才行,例項物件就必須要執行建構函式,然後拷貝到容器中再執行一次拷貝建構函式。

而emplace_back可以不用執行多餘的拷貝建構函式了,它是直接在容器內執行物件的構造:

vectorv;

v.emplace_back("redis");

兩個函式的執行結果:

我以前確實是還不知道這個函式,要不是編譯器提醒我,以後我可能也不會知道。不得不說ide在某些方面也能幫助我們提高眼界

C 中vector和vector的區別

在使用stl容器 比如map list vector等 的時候,是用放乙個物件還是放乙個物件指標,即是用vector還是vector,這裡的vector可以換成其他的容器,int可以換成其他基本型別,也可以自定義的資料結構或類。首先,要說明的是,這兩種方式,怎麼用都可以實現功能,把一組整型數放到容器...

c 中vector和vector的用法區別

在使用stl容器 比如map list vector等 的時候,是用放乙個物件還是放乙個物件指標,即是用vector還是vector,這裡的vector可以換成其他的容器,int可以換成其他基本型別,也可以自定義的資料結構或類。首先,要說明的是,這兩種方式,怎麼用都可以實現功能,把一組整型數放到容器...

vector 中存放陣列

vector array 3 注意 和 之間的空格。array2可以儲存3個向量,向量的長度是可以改變的。array2 i 返回的是第i個向量。同理,array2 i j 返回的是第i個向量中的第j個元素。注意不能這樣賦值 array2 1 2 9 原因就是你沒有指定向量的大小。用push back...