[C++] pair

임승섭·2023년 8월 6일
0

C++

목록 보기
3/4

sorting

  • compare 함수를 직접 구현하지 않아도 오름차순 sorting은 가능하다

    #include <algorithm>
    
    int main() {
        vector< pair<int, int> > arr;
    
        arr.push_back(make_pair(1, 3));
        arr.push_back(make_pair(2, 9));
        arr.push_back(make_pair(0, 7));
        arr.push_back(make_pair(1, 6));
        arr.push_back(make_pair(2, 3));
        arr.push_back(make_pair(6, 10));
        arr.push_back(make_pair(8, 8));
    
        sort(arr.begin(), arr.end());
    
        for (int i = 0; i < 7; i++) {
            printf("%d %d\n", arr[i].first, arr[i].second);
        }
    
        // 출력
        // 0 7
        // 1 3
        // 1 6
        // 2 3
        // 2 9
        // 6 10
        // 8 8
  • 만약 내림차순 sorting을 하고 싶으면 compare 함수를 구현하면 된다.
    당연히 오름차순일 때도 가능하다

    #include <algorithm>
    
    bool compare(const pair<int, int>&a, const pair<int, inr>&b) {
        if (a.first == b.first) {
            return a.second > b.second;
        }
    
        return a.first > b.first
    
        // 부등호 방향으로 오름차순/내림차순을 구분한다
    }
    
    int main() {
        vector< pair<int, int> > arr;
    
        arr.push_back(make_pair(1, 3));
        arr.push_back(make_pair(2, 9));
        arr.push_back(make_pair(0, 7));
        arr.push_back(make_pair(1, 6));
        arr.push_back(make_pair(2, 3));
        arr.push_back(make_pair(6, 10));
        arr.push_back(make_pair(8, 8));
    
        sort(arr.begin(), arr.end(), compare);
    
        for (int i = 0; i < 7; i++) {
            printf("%d %d\n", arr[i].first, arr[i].second);
        }
    
        // 출력
        // 8 8
        // 6 10
        // 2 9
        // 2 3
        // 1 6
        // 1 3
        // 0 7

0개의 댓글