スクリプト言語だと、複数の変数への代入を1行で行えることが多いです。以下はPythonの例。
a,b,c = 10, 7.7, "hello" print(a,b,c)
これと同じことをC++11でも行うには、std::tie()を使います。
#include <iostream> #include <tuple> using namespace std; int main(){ int a; double b; string c; std::tie(a,b,c) = std::make_tuple(10, 7.7, "hello"); cout << a << ", " << b << ", " << c << endl; return 0; }
出力は以下です。a, b, cにそれぞれ10, 7.7, "hello"が代入できています。
10, 7.7, hello
代入する必要のない値がある場合は、std::ignoreで受けます。例えば上の例で、bの値は実は後で使用しないのであれば、以下のように書くとその意図を分かりやすく表現できます。
#include <iostream> #include <tuple> using namespace std; int main(){ int a; string c; std::tie(a,std::ignore,c) = std::make_tuple(10, 7.7, "hello"); cout << a << ", " << c << endl; return 0; }