C++
1//元のソースコード 2int main(){ 3//////////////////////////////////////////////////////// 4 std::vector<float> position{ 0,0,0,0 }; 5 std::vector<float> a_predicted{ 0,0,0 }; 6 Mat xyz; 7 position[0] = -1 * xyz.at<double>(0, 0);//x 8 position[1] = -1 * xyz.at<double>(1, 0);//y 9 position[2] = xyz.at<double>(2, 0) + 100;//z 10 a_predicted[0] = position[0]; 11 a_predicted[1] = position[1]; 12 a_predicted[2] = position[2]; 13//////////////////////////////////////////////////////// 14} 15 16//新しいソースコード 17 //関数化 18 vector<float> Restore(Mat xyz) { 19 std::vector<float> position{ 0,0,0,0 }; 20 position[0] = -1 * xyz.at<double>(0, 0);//x 21 position[1] = -1 * xyz.at<double>(1, 0);//y 22 position[2] = xyz.at<double>(2, 0) + 100;//z 23 24 return position; 25 }; 26 27int main(){ 28/////////////////////////////////////////////////////// 29 std::vector<float> a_predicted{ 0,0,0 }; 30 Mat xyz; 31 Restore(Mat xyz); 32 a_predicted[0] = ???; 33 a_predicted[1] = ???; 34 a_predicted[2] = ???; 35/////////////////////////////////////////////////////// 36};
元のソースコードで逐次行っていた処理を,関数Restoreを使って書き直したいです.
新しいソースコードでは,a_predicted[]にはどのようにしてpositionの値を入れればいいのかご教授お願い致します.
理想としましては↓
a_predicted[0] = Restore(Mat xyz).at<double>(0, 0)
のような形にしたいのですが,良い書き方が見つかりません
> a_predicted[0] = Restore(Mat xyz).at<double>(0, 0)
これだと、毎回無駄にposition配列に入れ、一つしか参照しないですよね。
a_predicted[0] = Restore(const Mat & xyz, 0);
じゃダメなの?