C++ 2쌍, 3쌍 값 묶기 - Pair, Tuple

Notepad96

·

2020. 11. 11. 05:24

300x250

 

 
 

1. pair, tuple - 2쌍, 3쌍 값 묶기

 

서로 연관이 있는 데이터끼리 처리하기 쉽고 직관적이게 알 수 있게 값을 묶고 싶을 때가 있다.

 

이러할 경우 직접 클래스나 구조체를 만들어서 묶을 수도 있지만 이게 2개나 3개이며 복잡한 반복적인 동작이 필요한 경우가 아닌 경우 c++에서는 pairtuple을 지원한다.

 

 

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


 
결과

 

 

- pairtuple 각각 make_pairmake_tuple을 사용하여서 간단하게 생성할 수 있다.

 

 
 

- tuple은 값을 읽을 시 get을 사용하는데

 
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

 

 

300x250