[C++] pair, tuple 클래스

Doorbals·2023년 1월 2일
0

CPP

목록 보기
2/16

1. pair 클래스

  • 두 개의 데이터를 쌍으로 묶어서 저장하는 클래스

* pair 클래스 함수

pair<int, int> p // 이처럼 'pair<데이터타입, 데이터타입> 변수이름' 과 같은 형식으로 변수 생성 가능

p.first		// p의 첫번째 인자 반환
p.second	// p의 두번째 인자 반환
make_pair(a, b)			// a, b를 값으로 하는 pair 반환
pair<int, int>(a, b)	// a, b를 값으로 하는 pair 반환 (위와 동일)

2. tuple 클래스

  • 세 개 이상의 데이터를 묶어서 저장하는 클래스

* tuple 클래스 함수

tuple<int, int, int> t // 이처럼 'tuple<데이터타입, 데이터타입, 데이터타입> 변수이름' 과 같은 형식으로 변수 생성 가능

get<0>(t);	// t의 첫번째 인자 반환
get<1>(t);  // t의 두번째 인자 반환
get<2>(t);	// t의 세번째 인자 반환
make_tuple(a, b, c)				// a, b, c를 값으로 하는 tuple 반환
tuple<int, int, int>(a, b, c)	// a, b, c를 값으로 하는 tuple 반환 (위와 동일)

3. 활용

  • pair나 tuple은 보통 알고리즘 문제를 풀 때 큐(queue), 스택(stack), 벡터(vector) 등과 함께 사용되는 경우가 많다.
	// 기본 형태
	vector<pair<int, int>> arr;	// pair<int, int> 타입의 데이터들을 저장하는 vector인 arr
    queue<pair<int, int>> q;
    stack<pair<int, int>> s;

    // typedef : 형식을 정의. 
    typedef pair<int, int> pii;	// 'pair<int, int>' 타입을 pii로 대체해서 사용하겠다.
    typedef tuple<int, int, int> tiii;  // 'tuple<int, int, int>' 타입을 tiii로 대체해서 사용하겠다.

    vector<pii> arr;
    queue<pii> q;
    stack<tiii> s;

    q.push(pair<int, int>(1, 2));	// q의 맨 뒤에 1, 2를 값으로 하는 pair 삽입 
    s.push(make_tuple<int, int, int>(1, 2, 3));	// s의 맨 뒤에 1, 2, 3을 값으로 하는 tuple 삽입

    cout << q.front().first;	// == 1
    cout << q.front().second;   // == 2

    cout << get<0>(s.top()); 	// == 1;
    cout << get<1>(s.top()); 	// == 2;
    cout << get<2>(s.top()); 	// == 3;
profile
게임 클라이언트 개발자 지망생의 TIL

0개의 댓글