본문 바로가기
C++ 코딩 정리/C++ STL

[C++ STL] Pair를 중첩해서 사용해보자.

by $# 2020. 3. 24.

먼저, pair를 처음 접해본다면 옆에 링크를 보고 오길 바란다. ( 참고 : https://far-simple.tistory.com/24 )


사용법

 

선언 : 

pair<int, pair<int, int > > 이름

 

저장 : 

이름 = make_pair(값, make_pair(값, 값));

 

출력 :

cout << 이름.first << ' ' << 이름.second.first << ' ' << 이름.second.second;


중첩 pair를 써서 총 3개의 값을 입력받을 때

 

이름 = make_pair(값, make_pair(값, 값));

( pair<int, pair<int, int > > 이름 일 때 )

 

위와 같이 되어있다면 첫번째 값은 이름.first 이고, 두번째 값은 이름.second.first, 세번째 값은 이름.second.second 이다.


반대로

 

이름 = make_pair(make_pair(값, 값), 값);

( pair<pair<int, int>, int > 이름 일 때 )

 

이런식이라면 첫번째, 두번째 값은 이름.first.first, 이름.first.second 이고, 세번째 값은 이름.second 이런식으로 이루어진다.


위와 같은 원리를 적용한다면 자신의 입맛에 맞게 pair를 적용시킬 수 있을 것이다.

 

마지막으로 이해 안되는 부분은 아래 중첩 pair 적용 된 소스코드를 보고 이해하기 바란다. 

 

 

˙˙˙

 

소스코드 

 

#include <iostream>
#include <utility>
using namespace std;
int main(){
	pair<int, pair<int, int > > good;
	good = make_pair(1, make_pair(2,3));
	cout << good.first << ' ' << good.second.first << ' ' << good.second.second << '\n';
}

 

 

#include <iostream>
#include <utility>
using namespace std;
int main(){
	pair<pair<int, int>, int > good;
	good = make_pair(make_pair(1,2) , 3);
	cout << good.first.first << ' ' << good.first.second << ' ' << good.second << '\n';
}

 

두 소스코드 모두 아래와 같은 결과가 출력된다.

 

1 2 3

 

댓글