私の関数で出力引数を避けようとしています。古い機能は次のとおりです。関数はベクトルで作られたタプルを返します
void getAllBlockMeanError(
const vector<int> &vec, vector<int> &fact, vector<int> &mean, vector<int> &err)
ここvec
が入力引数で、fact
、mean
とerr
は出力引数です。私は1つのタプルにグループ出力引数に試してみました:それは私にはきれいに見える
tie(fact, mean, err) = getAllBlockMeanErrorTuple(vec);
:
tuple< vector<int>, vector<int>, vector<int> >
getAllBlockMeanErrorTuple(const vector<int> &vec)
{
vector<int> fact, mean, err;
//....
return make_tuple(fact, mean, err);
}
は今、私は新しい関数を呼び出すことができます。質問がありますが、tie(fact, mean, err)
の等価割り当てはどのように機能しますか?深いコピーや移動をしますか? fact
以降、mean
とerr
getAllBlockMeanErrorTuple
の内部が破壊されますので、深いコピーではなく移動していることを願っています。
私は肯定的ではないんだけど、私は書かれて、それはベクトルをコピーすると思います。ベクタを 'make_tuple()'に移動すると、ベクタは移動する必要があります。 – Andy
私は 'struct Result {vectorファクト;ベクター平均;ベクターエラー; }; getterのより良い命名をするためにタプルの代わりに。 –
Jarod42