C++/유용한 도구

유틸리티 클래스 - tuple

coding-potato 2025. 1. 9. 15:50

tuple

서로 다른 데이터 타입의 여러 값을 하나의 객체로 묶어 저장할 수 있는 유틸리티 클래스입니다. pair의 확장 버전으로, 두 개 이상의 값을 저장할 수 있으며, 값의 순서와 개수를 고정합니다.

1. Tuple의 특징

  • 다수의 값 저장: 임의의 데이터 타입을 조합하여 여러 값을 하나로 묶음.
  • 템플릿 클래스: 데이터 타입과 개수를 컴파일 시간에 지정.
  • 인덱스 기반 접근: 요소에 std::get<index>()로 접근.
  • 비교 연산 가능: 사전순 비교 연산(==, <, >, 등)을 지원.
  • 구조 분해 할당 지원: C++17부터 구조 분해를 통해 각 요소를 개별 변수로 바로 할당 가능.

2. 필요 헤더파일

std::tuple를 사용하려면 <tuple> 헤더 파일을 포함해야 합니다.

3. 사용 예제

4. 주요 함수

함수 설명 예제
std::tuple<Ts...>() 빈 tuple 객체 생성 std::tuple<int, double, char> t;
std::tuple<Ts...>(v1, v2, ...) 초기값을 지정하여 tuple 생성 std::tuple<int, std::string> t(1, "text");
std::make_tuple(v1, v2, ...) tuple을 생성하는 간단한 방법 auto t = std::make_tuple(1, "text", 3.14);
std::get<index>(t) 지정된 인덱스의 요소에 접근 std::get<1>(t)
std::tie tuple을 변수에 분해하여 저장 std::tie(a, b, c) = t;
std::tuple_size<decltype(t)>::value tuple의 크기(요소 개수)를 반환 std::cout << std::tuple_size<decltype(t)>::value;
std::tuple_cat(t1, t2, ...) 여러 tuple을 병합하여 하나로 만듦 auto t = std::tuple_cat(t1, t2);
구조 분해 할당 tuple의 값을 분리하여 변수에 직접 대입 (C++17 이상) auto [a, b, c] = t;

5. 주요 연산자

연산자 설명 예제
==, != 두 tuple 객체가 같은지 또는 다른지 비교 if (t1 == t2)
<, <=, >, >= 두 tuple 객체를 사전순으로 비교 if (t1 < t2)
std::swap(t1, t2) 두 tuple 객체의 값을 교환 std::swap(t1, t2);

'C++ > 유용한 도구' 카테고리의 다른 글

템플릿(template)  (0) 2025.01.10
유틸리티 클래스 - pair  (0) 2025.01.09