[C++11] tuple
C++11
/ Programming
|
함수를 만들때 간혹 2개 이상의 값을 한번에 리턴해야 할 경우가 있습니다. 이럴때 기존에는 구조체를 정의하고
구조체 변수를 하나 선언한 후 값을 넣고 리턴해야 했습니다. 단지 리턴값을 여러개 받고 싶을 뿐인데 구조체를 정의해야 한다는 것이
좀 부담이었죠.
C++11에서는 이런 불편함을 없애기 위해 tuple을 도입했습니다. tuple을 사용하면 2개 이상의 변수를 한번에 묶어서 리턴할 수 있습니다. tuple을 사용하기 위해서는 #include <tuple>을 추가해야 합니다. tuple은 다음과 같이 생성하고 사용할 수 있습니다.
빈 값으로 tuple을 생성하고 나중에 값을 저장할 수도 있습니다.
tuple의 데이터 개수는 tuple_size 함수를 이용해 알아낼수 있습니다. 위와 같이 tuple을 만들었다면 count가 3이 될것입니다.
tie 함수를 이용하면 tuple에 데이터를 하나씩 넣지 않고 여러개를 한번에 넣거나 읽어올수도 있습니다.
모두 넣지 않고 일부만 넣을수도 있습니다.
tuple을 합치려면 tuple_cat 함수를 사용하면 됩니다.
C++11에서는 이런 불편함을 없애기 위해 tuple을 도입했습니다. tuple을 사용하면 2개 이상의 변수를 한번에 묶어서 리턴할 수 있습니다. tuple을 사용하기 위해서는 #include <tuple>을 추가해야 합니다. tuple은 다음과 같이 생성하고 사용할 수 있습니다.
// int, int, string 타입으로 tuple 생성 std::tuple<int, int, std::string> items = std::make_tuple(1, 2, "test"); // std::tuple<int, int, std::string> items(1, 2, "test"); // 이렇게 해도 가능합니다 std::cout << std::get<0>(items) << std::endl; // 첫번째 값을 출력합니다. 값은 1입니다. std::cout << std::get<1>(items) << std::endl; // 두번째 값을 출력합니다. 값은 2입니다. std::cout << std::get<2>(items) << std::endl; // 세번째 값을 출력합니다. 값은 test입니다. std::get<0>(items) = 5; // 첫번째 값을 5로 변경합니다. |
tuple의 데이터 개수는 tuple_size 함수를 이용해 알아낼수 있습니다. 위와 같이 tuple을 만들었다면 count가 3이 될것입니다.
auto count = std::tuple_size<decltype(items)>::value; |
tie 함수를 이용하면 tuple에 데이터를 하나씩 넣지 않고 여러개를 한번에 넣거나 읽어올수도 있습니다.
std::tuple<int, int, std::string> items(1, 2, "test"); int a, b; std::string str; std::tie(a, b, str) = items; // a는1, b는 2, str은 test가 들어갑니다. |
모두 넣지 않고 일부만 넣을수도 있습니다.
std::tie(a, std::ignore, str) = items; // a는1, str은 test가 들어갑니다. |
tuple을 합치려면 tuple_cat 함수를 사용하면 됩니다.
std::tuple<int, int, std::string> items1(1, 2, "test1"); std::tuple<int, int, std::string> items2(3, 4, "test2"); auto tupleSet = std::tuple_cat(items1, items2); // tupleSet은 1, 2, test1, 3, 4, test2 가 됩니다. |
댓글 없음:
댓글 쓰기