programming/C++

[C++] Pair , Make_pari 소개

KoTiv 2022. 4. 4. 16:16
반응형
SMALL

C++ 코테연습중 Pair, make_pari에 대한 기능이있어 간략하게 정리하고자 한다 .

1. Pair 클래스란 ?

두 객체를 하나의 객체로 취급 할 수 있게 묶어주는 클래스로 STL에서 데이터 쌍을 표현할때 사용하게 된다.

<utility> 헤더에 pair객체가 존재하므로 #include<utility> 헤더를 선언해주어야 한다 .

2. Pair 원형 

template <class T1, class T2> struct pair;

template <typename T1, typenameT2> struct pair;

T1 = first 

T2 = second로 구분한다 .

3. pair 선언 방식 

pair < type1, type2 > A

3.1. pair<int , string> p = make_pair(30,"test");

3.2 pair<int, int> p; p= make_pair(30,40);

3.3 auto v = make_pair(30,40);

4. Pair 멤버함수 및 사용방법

pair<[type1], [type2]> p

사용할 데이터 타입 1, 2를 넣고 그 타입의 Pair클래스인 P를 만든다.

p.first : p의 type1인 첫번쨰 인자를 반환한다.

p.second : p의 type2인 두번째 인자를 반환한다.

make_pair(var1, var2) : var1, var2가 들어간 pair를 만들어준다.

operator로 ( ==, !=, < , > ,  <=, >= ) 가 정의 되어 있어 사용 가능하다.

sort알고리즘에의해 정렬이 가능하다 (정렬시 first 인자 기준으로 우선정렬후 first 인자가 동일하면 second인자기준으로 판단하여 정렬하게 된다) 

5. 예제

#include <iostream>
#include <utility>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
	//1 
    pair<int, sting> v = make_pair(30,"test");
    auto v1 = make_pair(30,"test");
    //2
    pair<int, int> v2;
    v2=make_pair(20,30);
    
    //3
    pair<int,int>v3;
    v3.first = 1;
    v3.second =2;
    
    //4
    vector<pair<int,string> > vv1;
    
    vv1.push_back(pair<int, string>(3, "Dok2"));    
    vv1.push_back(pair<int, string>(6, "DMask"));    
    vv1.push_back(pair<int, string>(1, "Tiger JK"));    
    vv1.push_back(pair<int, string>(4, "Block"));    
    vv1.push_back(pair<int, string>(2, "banana"));    
    vv1.push_back(pair<int, string>(2, "apple"));    
    
    cout << "=== After sort === " << endl;
    
    vector<pair<int, string> >::iterator iter;
    for(iter = vv1.begin(); iter != vv1.end(); iter++){
        cout << "[" << iter->first << "," << iter->second << "]" << endl;
    }
    
    cout << endl;
    sort(vv1.begin(), vv1.end());
    cout << "=== After sort === " << endl;
    
    for(iter = vv1.begin(); iter != vv1.end(); iter++){
        cout << "[" << iter->first << "," << iter->second << "]" << endl;
    }
 
    return 0;    
}

 

반응형
LIST