TIL

주상돈·2025년 1월 14일

TIL

목록 보기
15/53

C++의 std::sort 함수는 세 가지 인자를 받을 수 있다.

std::sort(시작_반복자, 끝_반복자, 비교_함수);

각 인자의 의미는 다음과 같습니다:

  1. 시작 반복자 (arr)

    • 정렬을 시작할 범위의 첫 번째 요소를 가리키는 반복자이다.
    • 보통 배열의 경우 시작 주소를 사용합니다.
  2. 끝 반복자 (arr + size)

    • 정렬을 멈출 범위의 바로 다음 요소를 가리키는 반복자이다.
    • 배열의 경우 마지막 요소의 다음 주소를 지정한다.
  3. 비교 함수 (compare) (선택적 인자)

    • 두 요소를 비교하기 위한 함수나 함수 객체이다.
    • 이 함수는 bool 값을 반환해야 하며, 아래 조건을 만족해야 한다.
bool compare(const T& a, const T& b);

ab보다 "앞에"와야 한다고 판단되면 true, 그렇지 않으면 false를 반환해야 한다.

예제

기본 정렬(오름차순)

#include <algorithm>
#include <iostream>

int main() {
    int arr[] = {3, 1, 4, 1, 5, 9};
    std::sort(arr, arr + 6); // 배열 전체를 오름차순으로 정렬

    for (int n : arr)
        std::cout << n << " ";
    return 0;
}

출력:

1 1 3 4 5 9

사용자 정의 비교 함수 (내림차순 정렬)

#include <algorithm>
#include <iostream>

bool compare(int a, int b) {
    return a > b; // 내림차순
}

int main() {
    int arr[] = {3, 1, 4, 1, 5, 9};
    std::sort(arr, arr + 6, compare); // 배열 전체를 내림차순으로 정렬

    for (int n : arr)
        std::cout << n << " ";
    return 0;
}

출력:

9 5 4 3 1 1

림다 함수로 비교 조건 지정

#include <algorithm>
#include <iostream>

int main() {
    int arr[] = {3, 1, 4, 1, 5, 9};
    std::sort(arr, arr + 6, [](int a, int b) {
        return a < b; // 오름차순
    });

    for (int n : arr)
        std::cout << n << " ";
    return 0;
}

출력:

1 1 3 4 5 9

이처럼 std::sort는 매우 유연하며 다양한 조건으로 정렬을 수행할 수 있다.

0개의 댓글