- tuple[meta header]
- std[meta namespace]
- class template[meta id-type]
- cpp11[meta cpp]
namespace std {
template <class... Args>
class tuple;
}
tuple
型は、複数の型の値を保持する「タプル」を表現するためのクラスである。
pair
型は2つの型の値を保持する「組」を表現することができるが、tuple
ではN個の型の値を扱うことができる。
名前 |
説明 |
対応バージョン |
get |
tuple のi 番目の要素を参照する |
C++11 |
名前 |
説明 |
対応バージョン |
swap |
2つのtuple オブジェクトを入れ替える |
C++11 |
#include <iostream>
#include <tuple>
#include <string>
int main()
{
// 3要素のタプルを作る
std::tuple<int, char, std::string> t = std::make_tuple(1, 'a', "hello");
// 0番目の要素を参照
int& i = std::get<0>(t);
std::cout << i << std::endl;
// 2番目の要素を参照
std::string& s = std::get<2>(t);
std::cout << s << std::endl;
}
- std::tuple[color ff0000]
- std::get[link tuple/get.md]
- std::make_tuple[link make_tuple.md]
#include <iostream>
#include <tuple>
#include <string>
// 関数から複数の値を返す
std::tuple<int, char, std::string> f()
{
// std::make_tuple()はほとんどの状況で必要ない
return {1, 'a', "hello"};
}
int main()
{
// 構造化束縛でタプルを分解して、それぞれの要素を代入
auto [a, b, c] = f();
std::cout << a << std::endl;
std::cout << b << std::endl;
std::cout << c << std::endl;
}
- std::make_tuple[link make_tuple.md]