C++ 2쌍, 3쌍 값 묶기 - Pair, Tuple
Notepad96
·2020. 11. 11. 05:24
300x250
1. pair, tuple - 2쌍, 3쌍 값 묶기
서로 연관이 있는 데이터끼리 처리하기 쉽고 직관적이게 알 수 있게 값을 묶고 싶을 때가 있다.
이러할 경우 직접 클래스나 구조체를 만들어서 묶을 수도 있지만 이게 2개나 3개이며 복잡한 반복적인 동작이 필요한 경우가 아닌 경우 c++에서는 pair과 tuple을 지원한다.
pair과 tuple은 각각
2쌍의 값을 묶고 싶다면 pair 헤더 : #include <utility>
3쌍의 값을 묶고 싶다면 tuple 헤더 : #include <tuple>
을 사용하면 된다.
이 둘을 사용하려면 각가 헤더를 추가해주어야 하지만 pair의 경우 기본적으로 존재하고 있어서 따로 헤더를 추가해주지 않고도 사용할 수 있다.
2. 코 드
환경 : Visual studio 2019
#include <iostream>
#include <vector>
#include <tuple>
using namespace std;
int main() {
vector<pair<int, int>> v;
v.push_back(make_pair(5, 6));
v.push_back(make_pair(3, 2));
v.push_back(make_pair(1, 8));
v.push_back(make_pair(4, 3));
for (int i = 0; i < v.size(); i++) {
cout << v[i].first << ":" << v[i].second << "\n";
}
cout << "\n";
vector<tuple<int, string, int>> v2;
v2.push_back(make_tuple(1, "ab", 3));
v2.push_back(make_tuple(2, "cbg", 7));
v2.push_back(make_tuple(3, "hgf", 5));
v2.push_back(make_tuple(4, "xyz", 9));
for (int i = 0; i < v2.size(); i++) {
cout << get<0>(v2[i]) << ":" << get<1>(v2[i]) << ":" << get<2>(v2[i]) << "\n";
}
cout << "\n";
return 0;
}
- pair과 tuple 각각 make_pair와 make_tuple을 사용하여서 간단하게 생성할 수 있다.
- tuple은 값을 읽을 시 get을 사용하는데
get<튜플에서 읽어올 값 인덱스>(튜플) 의 형식이다.
'<>'의 들어가는 인덱스 값은 튜플이므로 3개만 있으며 0~2까지 이다.
3. 참 조
300x250