구조체 또는 클래스는 항상 연산자 오버로딩을 해줘야하고 클래스명으로 가야한다.
struct Student
{
int id, pow;
char team;
Student(int a, char b, int c) : id(a),team(b),pow(c)
{
}
bool operator<(const Student& b) const { return pow < b.pow; }
bool operator>(const Student& b) const { return pow > b.pow; }
};
여기서 pow 기준으로 정렬할텐데 이때 algorithm 헤더파일 내에 sort 함수를 사용하고 pred 인자로 해당 연산자 오버로딩 함수를 보내주면 된다. 디폴트 값 : less<>();
vector<Student> st;
// pred 템플릿 인자로 무조건 클래스명으로 줘야한다.
sort(st.begin(), st.end(), greater<Student>());
less 사용 시 < 연산자 오버로딩 함수 호출
greater 사용 시 > 연산자 오버로딩 함수 호출
아래와 같이 람다식으로도 가능하다.
sort(st.begin(), st.end(), [](const Student& a, const Student& b) -> bool
{
return a.pow < b.pow;
});
'코딩테스트 > 코딩테스트 알고리즘' 카테고리의 다른 글
[C] 이진 탐색 (Binary Search) 알고리즘 개념과 예제 (0) | 2023.08.23 |
---|---|
오목 AI 제작 - MIN_MAX 전략을 통한 필승 수 구현 (0) | 2023.08.14 |
투 포인터 알고리즘(Two Pointers Algorithm) (0) | 2023.08.13 |
달팽이 방향으로 배열 순회 (0) | 2022.11.24 |
스위핑 알고리즘 (Sweeping algorithm) (0) | 2022.11.23 |