C++의 std::sort 함수는 세 가지 인자를 받을 수 있다.
std::sort(시작_반복자, 끝_반복자, 비교_함수);
각 인자의 의미는 다음과 같습니다:
시작 반복자 (arr)
끝 반복자 (arr + size)
비교 함수 (compare) (선택적 인자)
bool compare(const T& a, const T& b);
a가 b보다 "앞에"와야 한다고 판단되면 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는 매우 유연하며 다양한 조건으로 정렬을 수행할 수 있다.