#include <iostream>
#include <boost/tuple/tuple.hpp>
#include <boost/tuple/tuple_io.hpp>
using namespace std;
boost::tuple<int, int, int, double> add_sub_mul_div(int a, int b)
{
// 四則演算結果を全部返す関数です
return boost::make_tuple(
a+b,
a-b,
a*b,
double(a)/double(b)
);
}
int main()
{
boost::tuple<int, int, int, double> t = add_sub_mul_div( 3, 2 );
cout << t << endl;
// 各要素の取り出しなどしてみる
cout << "0: " << t.get<0>() << endl;
cout << "1: " << t.get<1>() << endl;
cout << "2: " << t.get<2>() << endl;
cout << "3: " << t.get<3>() << endl;
return 0;
}
(5 1 6 1.5) 0: 5 1: 1 2: 6 3: 1.5
一度に二つの値を関数の返値として返したいときは std::pair
ですが、三つ以上だとこの boost::tuple
が便利です。
あとこれに関連して boost::tie
を使うと、
だんだん関数型言語っぽくなってきて面白かったり。
詳しくは本家の リファレンス をどうぞ。