-
Notifications
You must be signed in to change notification settings - Fork 2
2014 08 12 튜플
krikit edited this page Nov 26, 2014
·
1 revision
기존의 C++ 표준 라이브러리에는 pair 템플릿 클래스가 (여전히) 있고 first와 second로 접근할 수 있습니다. 이걸 가지고 예전의 scheme에서 car, cdr, cdar, ... 등을 흉내내어 사용했던 기억도 있습니다. ^^;
C++11에는 tuple이라는 새로운 템플릿 클래스가 제공됩니다. 아래 코드를 보시죠.
#include <tuple>
int main(int argc, char** argv) {
typedef std::tuple<int, double, std::string> triple_t;
triple_t triple1(1, 2.2, "three");
std::cout << std::get<0>(triple1) << std::endl; // 1
std::cout << std::get<1>(triple1) << std::endl; // 2.2
std::cout << std::get<2>(triple1) << std::endl; // three
return 0;
}
혹은, make_tuple 함수를 통해 편하게 튜플을 생성할 수도 있습니다.
int first = 1;
double second = 2.2;
std::string third = "three";
auto triple2 = std::make_tuple(first, std::ref(second), std::cref(third));
std::get<1>(triple2) += 1.1;
std::cout << std::get<1>(triple2) << std::endl; // 3.3
참고로, ref는 참조형을 cref는 const 참조형 타입을 지정할 때 사용하면 됩니다.
tuple_cat 함수를 이용하면 두 튜플을 연결할 수도 있습니다.
auto tuple1 = std::make_tuple(1, "two");
auto tuple2 = std::make_tuple(3.3, "four");
auto tuple12 = std::tuple_cat(tuple1, tuple2);
std::cout << std::get<3>(tuple12) << std::endl; // four