tuple — std::tuple

tuple — std::tuple

std::tuple 클래스 템플릿은 고정 크기의 이기종(heterogeneous) 값 컬렉션이에요. C++11에서 도입됐어요. <tuple> 헤더에 있어요.

std::pair의 일반화 — 서로 다른 타입의 값을 여러 개 묶을 수 있어요.

출처: cppreference

본문

// <tuple> 헤더, C++11
template< class... Types >
class tuple;

사용 예

#include <tuple>
#include <string>

std::tuple<int, std::string, double> t(1, "hi", 3.14);

// get으로 접근
int n = std::get<0>(t);        // 1
std::string s = std::get<1>(t); // "hi"

// 구조적 바인딩 (C++17)
auto [a, b, c] = t;   // a=1, b="hi", c=3.14

만들기 (make_tuple / 도우미)

#include <tuple>

auto t = std::make_tuple(1, "x", 2.5);   // 추론
// C++17: CTAD
std::tuple u(1, "x", 2.5);

여러 값 반환

std::tuple<int, int> min_max(const std::vector<int>& v) {
    return { *std::min_element(v.begin(), v.end()),
             *std::max_element(v.begin(), v.end()) };
}

auto [lo, hi] = min_max(vec);

주요 연산

기능 설명
std::get<I>(t) I번째 원소 접근
std::get<Type>(t) 타입으로 접근
std::tuple_size 원소 개수
std::tuple_element 원소 타입
std::tie 참조로 묶기
std::apply 원소를 인자로 함수 호출
비교 연산자 사전순 비교
// std::tie — 참조 바인딩
int a; std::string b;
std::tie(a, b) = std::make_tuple(10, "hi");   // a=10, b="hi"

std::tuple은 서로 다른 타입의 값들을 하나로 묶어 반환·저장하는 표준 컨테이너예요. 여러 반환값, 이기종 데이터 그룹에 널리 쓰여요.

더 알아보기 (Learn more)

cppreference