std::move

std::move函數(shù)可以以非常簡單的方式將左值引用轉(zhuǎn)換為右值引用。
通過std::move,可以避免不必要的拷貝操作。

std::move是為性能而生。

std::move是將對象的狀態(tài)或者所有權(quán)從一個對象轉(zhuǎn)移到另一個對象,只是轉(zhuǎn)移,沒有內(nèi)存的搬遷或者內(nèi)存拷貝。

如string類在賦值或者拷貝構(gòu)造函數(shù)中會聲明char數(shù)組來存放數(shù)據(jù),然后把原string中的 char 數(shù)組被析構(gòu)函數(shù)釋放,如果a是一個臨時變量,則上面的拷貝,析構(gòu)就是多余的,完全可以把臨時變量a中的數(shù)據(jù)直接 “轉(zhuǎn)移” 到新的變量下面即可。

std::string str = "Hello";
std::vector<std::string> v;
//調(diào)用常規(guī)的拷貝構(gòu)造函數(shù),新建字符數(shù)組,拷貝數(shù)據(jù)
v.push_back(str);

//調(diào)用移動構(gòu)造函數(shù),掏空str,掏空后,最好不要使用str
v.push_back(std::move(str));

在隊里中
value = std::move(queue.front());
queue.pop() 以此來減少析構(gòu)拷貝地時間。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容