tuple


C++11 이전에는 2개의 값을 하나로 묶을 때 std::pair를 사용했다. C++11에서는 여기에서 이를 좀 더 개선하여 2개 이상의 값을 하나로 묶을 수 있는 std::tuple이 새로 생겼다.





tuple이 필요할때


프로그래밍을 하다 보면 함께 사용되는 변수들을 하나로 묶어서 사용하는 것이 편할 때가 있다. 특히 함수의 반환값으로 2개 이상의 값을 반환할 때가 가장 그렇다. 하지만 이를 위해서 구조체를 만들거나 컨테이너를 사용하는 것은 배보다 배꼽이 더 커지는 일이라 망설여지기도 한다.(서로 다른 형이면 컨테이너를 사용할 수 없다.)






tuple 사용하기


tuple을 사용하려면 다음 헤더 파일을 추가한다.


#include <tuple>



<std::tuple 사용 예제>








더 간단하게 tuple 정의하기


유틸리티 함수인 'make_tuple'을 사용하면 위에서 사용한 tuple을 정의할 때보다 좀 더 쉽게 정의할 수 있다.



<make_tuple 사용하기 예제>







tuple에 저장한 데이터 개수 알기


tuple에 저장된 데이터 개수를 알고 싶을 때는 std::tuple_size를 사용한다.



<tuple에 저장된 데이터 개수 예제>








tuple의 요소를 한꺼번에 다른 변수에 담기


std::tie 유틸리티 함수를 사용하면 참조 데이터를 가지는 tuple을 만들거나 tuple에 저장된 데이터를 일괄적으로 다른 변수에 담을 수 있다.




<std::tie 사용하기 예제>








tuple과 tuple 합치기


'tuple_cat'을 사용하면 tuple과 tuple을 합칠 수 있다.

tuple이 2개 이상일 때도 합칠 수 있다.




<tuple과 tuple 연결 예제>






출처 : Thinking About C++ STL 프로그래밍 (최홍배 지음)



'C++ > STL' 카테고리의 다른 글

17. forward_list  (0) 2017.10.23
16. array  (0) 2017.10.20
14. 메모리관리2 (unique_ptr)  (0) 2017.10.18
13. 메모리관리1 (shared_ptr)  (0) 2017.10.16
12. C++11 기초 2(range based for, enum, nullptr )  (0) 2017.10.13

+ Recent posts