ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [STL] pair
    Algorithm/C++ 2019. 11. 12. 19:00

    pair는 두 개의 자료형을 하나로 묶어서 사용할 수 있게 해준다.

    첫 번째 변수를 first, 두 번째 변수를 second라 한다.

     

    pair는 2차원 배열의 인덱스나 좌표를 사용할 때, 두 정점 사이의 최단거리를 묶어서 저장해야할 때 사용한다.

     

    1. 사용법

    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include <utility>
    pair<intchar> p[10];
     
    p[1= make_pair(10'c');
    cout << p[1].first << " " << p[1].second << endl//10, c
     
    p[1].first = 14141;
    p[1].second = 'd';
    cout << p[1].first << " " << p[1].second << endl//14141, d

    - pair에 데이터 한 쌍을 추가할 때에는 make_pair 함수를 사용한다.

    - 데이터쌍의 한 부분만 수정하고 싶으면 pair의 first 또는 second 변수로 접근하면 된다.

    - pair는 vector나 배열로도 사용할 수 있다.

     

     

    first와 second가 같은 pair을 2개 만들 경우, 같은 pair로 인식한다.

    1
        cout << (make_pair(11== make_pair(11)) << "\n"// 1

     

     

    2. 예제

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #include <iostream>
    using namespace std;
    #include <vector>
    #include <utility>
     
    int n = 20;
    vector<pair<intint>> vec;
     
    int main()
    {
        int i, a = 1, b = 1, c;
        for (i = 1; i <= n; ++i){
            vec.push_back(make_pair(a, b));
            vec.emplace_back(a, b);
            c = a + b;
            a = b;
            b = c;
        }
        for (i = 0; i < vec.size(); ++i) cout << vec[i].first << " " << vec[i].second << endl;
        return 0;
    }
     

     

    위 코드는 pair를 vector로 사용하는 예제이다. 

    pair을 vector로 생성하는 방법은 2가지가 있는데

    하나는 push_back과 make_pair 두 함수를 사용하는 것이고,

    다른 하나는 emplace_back 함수를 사용하는 것이다. 

    emplace_back을 사용하면 튜플을 한꺼번에 처리할 수 있기 때문에 더 효율적이다.

     

    실행 결과

     

     

    [참고 문헌]

    https://sarah950716.tistory.com/4

    'Algorithm > C++' 카테고리의 다른 글

    [백준][C++] 5052. 전화번호 목록  (0) 2020.10.02
    [STL] vector  (0) 2019.11.05
    [STL] iostream, std, 입출력(cin, cout)  (0) 2019.11.05
Designed by Tistory.