簡體   English   中英

將std :: vector作為函數參數交換

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM