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

[C++ STL] pair 에서 make_pair 대체

by $# 2020. 3. 22.

문제

c++ 문제 풀 때 구조체 쓰기 귀찮고 인자를 묶고 싶을 때 보통 pair를 쓰곤 한다.

손이 편하면 머리가 힘들어지는 법, 외워야하는 게 더 늘어나기 마련이다.

 

그 중 하나가 pair에서 make_pair를 쓰는 것인데, 일단 make_pair 자체가 9자나 되고 한 소스 안에 pair를 이용한 코드들이 많이 들어있다면 손이 힘들어질 수있다.( 사실 억지긴 하다.) 

 

그래서 make_pair을 안쓰고 pair에 값을 담아줄 수있는 코드를 찾아보게 되었다.


해결

우리는 c++ 11 이상부터 pair에 초기화 리스트를 사용할 수있다고 한다.

중요한 점은 c++ 11 버전이상부터 라는 점이다. ( 이걸 못보고 나중에 글쓴이를 욕하지 마라. )

 

사용 법은 매우 간단하다.

make_pair() 대신 {} 로 바꿔주면 된다.

 

#include <iostream>
using namespace std;
int main(){
	pair<int , int > pp;
	int a, b; cin >> a >> b;
	//pp = make_pair(a, b);
	pp = {a, b};
	cout << pp.first << ' ' << pp.second << '\n'; 
}

 

중첩 pair를 쓰게 된다면 아래와 같이 해주면 된다.

 

#include <iostream>
using namespace std;
int main(){
	pair<int , pair<int, int > > pp;
	int a, b, c; cin >> a >> b >> c;
	//pp = make_pair(a, make_pair(b, c));
	pp = {a, {b, c}};
	cout << pp.first << ' ' << pp.second.first << ' ' << pp.second.second << '\n'; 
}

댓글