[英]Swap std::vector as function parameter
我想交換std::vector
作為函數參數,以便不必復制向量。
像這樣的東西:
function( std::vector< MyType >().swap( my_vector ) );
或者在我的情況下像這樣:
std::make_pair( 0, std::vector< MyType >().swap( my_vector ) );
但是當然std::vector::swap
返回void,而不是創建的向量。
有沒有辦法做到這一點?
使用任何現代編譯器,然后你可以使用std::move
,它接收你的向量並將其作為右值返回:
function(std::move(my_vector));
如果您無法使用,可以嘗試以下方法:
template<typename T>
T Move(T & val)
{
T ret;
ret.swap(val);
return ret;
}
如果你對此有任何好運,請告訴我。
或者,您可以在創建后將矢量直接交換到對中:
std::pair<int, std::vector<MyType> > p;
p.second.swap(my_vector);
雖然,我想如果你需要std::make_pair
的返回值作為右值,這對你沒有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.