std::ref
std::ref是一個模板函數(shù),它用于將一個對象封裝成一個引用包裝器,以便可以按引用方式傳遞該對象,而不是按值傳遞。std::ref創(chuàng)建的包裝器可以通過std::reference_wrapper類型進行訪問,并以引用的方式傳遞給函數(shù)或模板。std::reference_wrapper類型提供了一個成員函數(shù)get,用于獲取被引用對象的引用。
Case :?

std::ref和傳引用符號(&)的差異
I.作用范圍:使用傳引用符號時,引用只在聲明的作用域內(nèi)有效。而std::ref創(chuàng)建的引用包裝器可以在更廣泛的范圍內(nèi)傳遞和使用,包括函數(shù)間傳遞、存儲在容器中等。
II.傳遞方式:使用傳引用符號時,傳遞的是對象的引用。而std::ref創(chuàng)建的引用包裝器本身是一個對象,可以像普通對象一樣進行復(fù)制、賦值和傳遞。這對于需要將引用作為參數(shù)傳遞給函數(shù)或存儲在容器中的情況非常有用。
III.可空性:std::ref創(chuàng)建的引用包裝器是可空的,即可以通過賦值為空來表示沒有引用的情況。而使用傳引用符號時,引用是非空的,必須始終引用一個有效的對象。
std::cref
std::cref和std::ref一樣,只是std::cref創(chuàng)建的包裝器中包裝的是對常量對象的引用。
標(biāo)簽:C++