我試圖避免在我的函數中輸出參數。舊的功能是:函數返回由向量組成的元組
void getAllBlockMeanError(
const vector<int> &vec, vector<int> &fact, vector<int> &mean, vector<int> &err)
這裏vec
的輸入參數,fact
,mean
和err
是輸出參數。我試着組輸出參數添加一個元組:
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) = getAllBlockMeanErrorTuple(vec);
它看起來更清潔我。雖然我有一個問題,tie(fact, mean, err)
的平等分配是如何工作的?它是否做了深層複製或移動?由於fact
,mean
和err
裏面的getAllBlockMeanErrorTuple
將被銷燬,我希望它是做一個動作而不是深拷貝。
我還不能肯定,但我認爲,作爲寫它會複製載體。如果將矢量移動到'make_tuple()'中,則應移動它們。 – Andy
我會使用'struct Result {vector其實;矢量的意思;矢量犯錯; };而不是元組更好地命名getter。 –
Jarod42