[STL] Pair 활용법

Updated:

이번 포스트에서는 C++의 Pair 클래스에 대해서 정리해 보겠습니다. Pair 클래스는 주로 STL에서 데이터의 “쌍”을 표현할때 사용되며 두 객체를 하나의 객체로 취급할수있게 묶어주는 클래스입니다.

template<typename T1, typename T2> struct pair

멤버함수 및 사용법

  • pair<[type1], [type2]> p 사용할 데이터 타입 1, 2를 넣고 그 타입의 pair 클래스인 p를 만든다.
  • make_pair(변수1, 변수2) 변수1 과 변수2를 쌍으로 포함하는 pair를 만들어 준다.
    ex) 
      pair<int, string> p;
      p = make_pair(1,"hello");
    
  • p.first : p의 첫번째 인자를 반환한다.
  • p.second : p의 두번째 인자를 반환한다.
  • 대소 비교, sort연산 시에 첫번째인자를 비교후 같으면 두번째 인자를 비교하여 판단한다

사용 예제 코드

#include<iostream>
#include<utility> // pair 포함 헤더
using namespace std;

int main(void)
{
    pair<int, double> p1;
    p1 = make_pair(2, 3.4); //p1에 데이터 할당
    // p1 = {2, 3.4};  c++17부터 가능

    pair<int, double> p2(1, 2.3); //p2 초기화

    // cout<<p1<<'\n'; 오류
    cout<<p1.first<<' '<<p1.second<<'\n';

    p2=p1;
    cout<<p2.first<<' '<<p2.second<<'\n';

    p2.first=7;
    p2.second=0.3;
    cout<<p2.first<<' '<<p2.second<<'\n';

    return 0;
}

결과

2 3.4
2 3.4
7 0.3

대소 비교의 경우

#include<iostream>
#include<string>
#include<stack>
#include<utility> // pair 포함 헤더
using namespace std;

int main(void)
{
    stack <pair<int, string> > st;
    pair<int, string> p;

    p=make_pair(2, "Hello");
    st.push(make_pair(2, "I My Me Mine"));

    //compare 
    cout<<"p < st.top()?\n";

    if(p<st.top()) 
        cout<<"true";
    else 
        cout<<"false";

    return 0;
}

결과

p < st.top()?
true

위의 코드에서 p에는 $($2, “Hello”) 쌍이 저장되어 있고 스택의 탑에는 $($2, “I My Me Mine”) 이 저장되어있습니다. 이때 두 쌍을 바교한다면 첫번째 인자가 2로 같기때문에 두번째 인자를 비교하여 판단합니다. 이때 비교하는 것은 두번째 문자열의 길이가 아니라 첫번째 문자의 아스키코드 값을 비교하여 판단합니다. H(72) < I(73) 이므로 true가 결과값으로 출력되는 것입니다.

풀어보면 좋은 문제

탑 (BOJ_2493)

Categories:

Updated:

Leave a comment