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); |