본문 바로가기
CS/코딩테스트(C++)

[C++ STL] Pair 클래스 사용하기

by CDCP 2024. 12. 29.

Pair 클래스를 통해 두 종류의 데이터 타입을 묶어서 사용할 수 있다.

구조체를 구현하지 않고도 간단하게 데이터 쌍을 만들 수 있다.


pair 클래스?

  • 두 개의 데이터 타입을 하나로 묶어 저장하기 위해 사용
  • pair<자료형1, 자료형2> p로 생성할 수 있다.
  • .first, .second로 해당 인자에 접근할 수 있다.
  • vector와 같은 컨테이너에도 사용할 수 있다.

예) pair<int, char> p;

vector<pair<int, int>> v;


1. 필요한 라이브러리 

#include <utility> // utility 헤더는 vector와 algorithm 헤더에도 포함됨.
// 혹은
#include <vector>
// 혹은
#include <algorithm>
  • pair 클래스는 utility 헤더에 포함되어 있다.
  • uitility 헤더는 vector 헤더나 algorithm 헤더에도 포함되기 때문에 다른 헤더를 사용해도 된다.

2. pair 객체 생성 및 초기화, 접근

pair<int, bool> p;
p.first = 3;
p.second = true;

cout << p.first << endl;
cout << p.second << endl;

p.first, p.second로 해당 인자에 접근할 수 있다.

3.  make_pair

p = make_pair(3, true);
// p.first(3); p.second(true); 와 동일

make_pair()로도 값을 저장할 수 있다.

4. vector에 사용

vector<pair<int, bool>> v;
v.push_back(make_pair(3, true));
v.push_back(make_pair(7, false));

// v[0].first = 3, v[0].second = true
// v[1].first = 7, v[1].second = false

make_pair()은 map과 같이 데이터 쌍을 이루는 자료구조에도 사용할 수 있다.

5. 전체 소스 코드

#include <iostream>
#include <vector>
using namespace std;

int main()
{
	pair<int, bool> p;
	p.first = 3;
	p.second = true;

	cout << p.first << endl;
	cout << p.second << endl;
    
	// ---- 벡터 사용 -----
	vector<pair<int, bool>> v;
	v.push_back(make_pair(3, true));
	v.push_back(make_pair(7, false));

	cout << v[0].first << endl;
	cout << v[0].second << endl;
	cout << v[1].first << endl;
	cout << v[1].second << endl;

	return 0;
}

참고 자료

https://ya-ya.tistory.com/91