環境
- C++11
- Visual Studio 2017
質問内容
返り値が2つ以上の場合、Python では tuple を使って返すのが一般的ですが、C++ のライブラリ (例: OpenCV) の関数を見ていると、引数経由で返すものが多く、tuple を使うものはほぼ見かけません。
引数経由だと入力と出力がわかりづらくなるので、可読性の面ではタプルで返すほうが直感的のような気がします。
C++ の場合は、タプルで複数の返り値を返すということは、パフォーマンス等の面で不利になってしまう等のなんらかの事情があり、非推奨なのでしょうか?
cpp
1#include <iostream> 2#include <tuple> 3 4 5// 引数で渡すタイプ 6void divmod1(int a, int b, int &q, int &r) 7{ 8 q = a / b; 9 r = a % b; 10} 11 12// 返り値で渡すタイプ 13std::tuple<int, int> divmod2(int a, int b) 14{ 15 return std::make_tuple(a / b, a % b); 16} 17 18int main() 19{ 20 int q, r; 21 22 divmod1(10, 3, q, r); 23 std::cout << "q: " << q << ", r: " << r << std::endl; 24 // q: 3, r: 1 25 26 std::tie(q, r) = divmod2(10, 3); 27 std::cout << "q: " << q << ", r: " << r << std::endl; 28 // q: 3, r: 1 29}

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/02 14:24