C++ STL

sort 함수의 정렬기준

mintuchel 2023. 5. 14. 23:16
  1. 세번째 인자로 bool 함수를 전달한다
  2. 비교문이 true가 되면 왼쪽 놈(a)이 오른쪽 놈(b)보다 앞으로 간다.

[정렬기준 bool 함수 전달]

 

algorithm의 sort 함수를 쓸때 커스텀 정렬기준을 사용해야할때가 있다.

이런 경우에는 아래와 같이 세번째 인자로 정렬기준 함수를 전달한다.

bool comp(pair<string, int>& p1, pair<string, int>& p2)
{
    if (p1.second == p2.second)
    {
        return p1.first < p2.first;
    }

    return p1.second > p2.second;
}
sort(v.begin(), v.end(), comp);

 


[return true의 의미]

 

비교문이 true가 되면 왼쪽 놈(a)이 오른쪽 놈(b)보다 뒤로 간다.

 

return p1.first < p2.first;

 

이것이 true 이면 p1이 p2보다 앞에 온다.

 

return p1.second > p2.second;

 

이것이 true 이면 p1이 p2보다 앞에 온다.

 


[정렬 기준 연습하기 좋은 문제들]

 

https://www.acmicpc.net/problem/1181