[C++11] tuple
# tuple
std::pair의 경우 두 개의 element를 한번에 담을 수 있는 object 였다.
std::tuple의 경우는 pair가 확장되어 이종의 타입의 element를 갯수 제한 없이 담을 수 있는 object 이다.
# std::make_tuple
주어진 element로 부터 type을 결정하여 tuple을 생성한다
auto tuple1 = std::make_tuple(1, 'a', 2.0);
// tuple <int, char, double>
# std::get
주어진 tuple에서 위치를 기반으로 element 값을 반환한다.
auto tuple2 = std::make_tuple(100, 'A', 3.0);
auto get1 = std::get<0>(tuple2); // 100
std::get<1>(tuple2) = 'B' // tuple2 = 100, 'B', 3.0
# std::tie
특정 tuple에서 element의 위치에 기반한 참조를통해 값을 한번에 추출한다.
auto tuple3 = std::make_tuple(1, 10, 100);
int a,b,c;
std::tie(a,b,c) = tuple3; // a = 1, b= 10, c = 100
만약 tuple의 특정 위치의 값은 참조를 원하지 않는다면 std::ingnore를 사용해준다.
auto tuple4 = std::make_tuple(1, 5, 10 ,15);
int a,b;
std::tie(a, std::ignore, std::ignore, b) = tuple4 // a= 1, b = 15