(C++) 정렬 맞춤 정렬 규칙을 생성하기 위한 비교의 필요성 및 사용

정렬 – 비교

C++에서 자주 사용하는 함수 중 정렬 함수는 -헤더 사용.
이 함수는 벡터 또는 배열과 함께 사용됩니다.
아래는 사용 예입니다.

#include <iostream>
#include <algorithm> // sort 헤더파일
#include <vector> // 벡터 헤더파일
using namespace std;

int array_size = 8;

int main(){
    int array() = {4,5,2,1,5,1,74,5};
    vector<int> arr = {4,5,2,1,5,1,74,5};

    sort(arr.begin(),arr.end());
    sort(array,array+array_size,greater<int>());

    for(int i = 0; i < arr.size(); i++) {
        cout << arr(i) << " ";
    }
    cout << endl;
    for(int i = 0; i < array_size; i++) {
        cout << array(i) << " ";
    }
    /*  출력
        1 1 2 4 5 5 5 74 
        74 5 5 5 4 2 1 1
    */
}

보다 큼 또는 보다 작음을 사용하여 오름차순 또는 내림차순을 나타낼 수도 있습니다.

논의할 주요 요점은 자신만의 정렬 규칙을 정의하는 방법입니다.
B. 오름차순 또는 내림차순. 방법 자체는 간단합니다.

더 큰 기능에 사용자 지정 기능을 추가할 수 있습니다.
-위에 위치를 만듭니다.
사용자 정의 함수는 bool 타입으로 생성되며,
원하는 데이터 유형을 매개변수로 전달할 수 있습니다.
아래 예를 참조하십시오.

bool compare(int a, int b){
    if(a.count == b.count) return (a.num < b.num);
    return a.count < b.count;
}

int main(){
	vector<int> tmp;
	sort(tmp.begin(),tmp.end(),compare);
}

위와 같은 방법으로 하시면 됩니다.
매개변수에는 동일한 데이터 유형의 두 변수가 포함됩니다.

비교가 부울인 이유는 우선 순위 관계를 정의하기 위해 true 또는 false를 반환하기 때문입니다.

반환 값에 대해 말하면 간단합니다.

a < b : b가 a보다 큽니다.
→ b는 a 다음에 온다.
(오름차순)
a > b : a가 b보다 큽니다.
→ a는 b 다음에 온다.
(내림차순)

간단히 말해서, 더 큰 것이 우선순위에서 뒤로 밀려납니다(나중에 옵니다). 이 조정이 필요한 이유는 무엇입니까?
이것은 구조 또는 내부적으로 복잡한 데이터 유형이 사용되는 경우에 필요합니다.

struct Number{
    int num;
    int count;
};

이제 Number 구조가 존재하고 그 안에 두 개의 변수가 있습니다.
여기서 숫자를 기준으로 오름차순으로 정렬하고 싶습니다.

오름차순으로만 정렬하는 경우 숫자를 기준으로 오름차순으로 정렬할 수도 있습니다.

숫자 오름차순이지만 숫자별로 내림차순으로 정렬할 수도 있습니다.

그래서 이 기능이 필요합니다.
이 경우 다음과 같이 사용할 수 있습니다.

bool compare(Number a, Number b){
    if(a.count == b.count) return (a.num < b.num);
    return a.count < b.count;
}

그것은 예외적인 취급이지만 내부적으로도 우선 순위가 있습니다.
count가 num보다 우선합니다.

count는 오름차순이고 count가 같으면 num을 비교한다.
이렇게 사용할 수 있습니다.