[C++] std::sort와 커스텀 비교 함수로 정렬하기

비교 함수 이젠 헷갈리지 말자!

Table Of Contents

TL;DR

std::sort

특징

잊지 말아야 할 sort 함수의 특징들이 있다.

오버로딩

1. std::sort(first, last);

template< class RandomIt > void sort( RandomIt first, RandomIt last );

2. std::sort(policy, first, last);

template< class ExecutionPolicy, class RandomIt > void sort( ExecutionPolicy&& policy, RandomIt first, RandomIt last );

3. std::sort(first, last, comp);

template< class RandomIt, class Compare > void sort( RandomIt first, RandomIt last, Compare comp );

4. std::sort(policy, first, last, comp);

template< class ExecutionPolicy, class RandomIt, class Compare > void sort( ExecutionPolicy&& policy, RandomIt first, RandomIt last, Compare comp );

first, last

예시

위에서 말한 Random Access Iterator들을 이용해서 sort 함수에 범위를 지정해보자.

비교 함수(Comparison Function)

비교 함수 작성하기

bool comp(const Type1& a, const Type2& b);

위 형식으로 정의하면 된다.

bool comp(Type1 a, Type2 b);

이렇게도 정의할 수 있지만, a 또는 b의 값을 함수 안에서 수정해서는 안 된다.

비교 함수 예시

명명된 요구 사항:
Compare

참고

https://en.cppreference.com/w/cpp/algorithm/sort