C++ tuple로 이루어진 vector 요소 추가, 정렬, 출력

1. 정리

tuple은 여러 값을 하나로 묶어 보관할 때 쓴다. pair가 두 값으로 제한되는 반면 tuple은 세 개 이상의 값을 담을 수 있다.




string과 int로 구성한 tuple을 vector에 추가하고, 두 번째 값 기준으로 정렬한 뒤 출력한다.

vector<tuple<string, int>> v;

v.emplace_back("TEST_1", 1);
v.emplace_back("TEST_2", 2);




2. tuple 요소 출력

get<index>로 tuple 내부 값에 접근한다. get<0>은 string, get<1>은 int를 가리킨다.

for (const auto& item : v) {
    cout << get<0>(item) << " : " << get<1>(item) << endl;
}




3. 두 번째 값 기준 정렬

비교 함수를 전달하면 원하는 tuple 요소를 기준으로 정렬할 수 있다. 아래 코드는 int 값을 기준으로 내림차순 정렬한다.

bool compare(const tuple<string, int>& a, const tuple<string, int>& b) {
    return get<1>(a) > get<1>(b);
}

sort(v.begin(), v.end(), compare);




tuple은 별도 구조체를 정의하기에는 작은 데이터를 빠르게 묶어야 할 때 유용하다. 각 요소의 의미가 복잡해지면 이름을 줄 수 있는 구조체를 쓰는 편이 읽기 쉽다.

Comments

댓글을 불러오고 있습니다.