![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQMiwO%2FbtqMM34zxK0%2F3TRqsar1pEF1IxDgSSeHCK%2Fimg.png)
C++ 2쌍, 3쌍 값 묶기 - Pair, Tuple
Notepad96
·2020. 11. 11. 05:24
1. pair, tuple - 2쌍, 3쌍 값 묶기
서로 연관이 있는 데이터끼리 처리하기 쉽고 직관적이게 알 수 있게 값을 묶고 싶을 때가 있다.
이러할 경우 직접 클래스나 구조체를 만들어서 묶을 수도 있지만 이게 2개나 3개이며 복잡한 반복적인 동작이 필요한 경우가 아닌 경우 c++에서는 pair과 tuple을 지원한다.
pair과 tuple은 각각
2쌍의 값을 묶고 싶다면 pair 헤더 : #include <utility>
3쌍의 값을 묶고 싶다면 tuple 헤더 : #include <tuple>
을 사용하면 된다.
이 둘을 사용하려면 각가 헤더를 추가해주어야 하지만 pair의 경우 기본적으로 존재하고 있어서 따로 헤더를 추가해주지 않고도 사용할 수 있다.
2. 코 드
#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;
}
![](https://blog.kakaocdn.net/dn/u4ckZ/btqMRjE7BhW/zoklbg5D21rSBKCiClKFHk/img.png)
- pair과 tuple 각각 make_pair와 make_tuple을 사용하여서 간단하게 생성할 수 있다.
- tuple은 값을 읽을 시 get을 사용하는데
'<>'의 들어가는 인덱스 값은 튜플이므로 3개만 있으며 0~2까지 이다.
3. 참 조
pair - C++ Reference
second_typeThe second template parameter (T2)Type of member second.
www.cplusplus.com
tuple - C++ Reference
123456789101112131415161718192021222324252627 // tuple example #include // std::cout #include // std::tuple, std::get, std::tie, std::ignore int main () { std::tuple foo (10,'x'); auto bar = std::make_tuple ("test", 3.1, 14, 'y'); std::get<2>(bar) = 100; /
www.cplusplus.com