std::vector
を関数パラメータとして入れ替えて、ベクトルをコピーする必要はありません。関数パラメータとしてstd :: vectorを入れ替えよう
function(std::vector<MyType>().swap(my_vector));
またはこのような私の場合:無効
std::make_pair(0, std::vector<MyType>().swap(my_vector));
しかし、もちろんのstd::vector::swap
戻り、ない作成ベクトル、このような
何か。
これを行う方法はありますか?
なぜリファレンスを使用しないのですか? – perreal
@perreal私はこの機能を制御できないためです。 ( 'std :: make_pair') –
@Jay:関数がその引数をコピーし、その関数を変更できない場合、関数が引数をコピーしないようにすることはできません。 (もちろん、 'std :: make_pair'の場合は、rvalue参照でパラメータを受け取り、' pair'コンストラクタに転送するバージョンがあり、それをコピーするのではなく引数を移動します(引数が値の参照)) – Mankarse