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;
}
참고 자료
'CS > 코딩테스트(C++)' 카테고리의 다른 글
[C++ STL] Vector 초기화 시 비용 절감 방법 (0) | 2025.01.01 |
---|---|
[C++] 주소에 의한 호출, 참조에 의한 호출 (Call by Address, Reference), 포인터로 객체 멤버 접근하기 (0) | 2024.12.30 |
[C++] fixed와 precision로 소수 특정 자릿수까지 출력하기 (0) | 2024.12.26 |
[C++] getline() 특정 문자가 들어올 때까지 입력 받기 (0) | 2024.12.12 |
[C++] 시간복잡도 상수배 관련 최적화 요소들 (0) | 2024.11.20 |