어제의 나보다 성장한 오늘의 나

[C++] Sort 와 Compare 함수 (Greater , less) 본문

c++/문법

[C++] Sort 와 Compare 함수 (Greater , less)

today_me 2022. 2. 10. 23:54
반응형

sort를 오름차순과 내림차순 중에 결정할 때 compare함수가 사용된다.

 

특히 <algorithm>에 저장되어 있는 sort 나 heap_sort를 사용할 때 많이 사용된다.
사용법은 동일 하니 STL Sort 함수를 기준으로 알아보자.

 

 

① compare 함수 생략 (오름차순)

    vector<int> v = {4,5,2,1,3};
    sort(v.begin() , v.end());

 

② compare 함수 (내림차순)

 

bool comp_desc(int a , int b){
    return a>b;
}
vector<int> v1 = {4,5,2,1,3};
    sort(v1.begin() , v1.end() , comp_desc);

 

③ greater 함수 (내림차순)

vector<int> v2 = {4,5,2,1,3};
sort(v2.begin() , v2.end(),greater<>());

 

④ less 함수 (오름차순)

vector<int> v3 = {4,5,2,1,3};
sort(v3.begin() , v3.end(),less<>());

 

오름 차순 정렬 일 때 : 생략 or less

내림 차순 정렬 일 때 : greater or comp(만들어야 함.)

 

Coding

#include <iostream>
#include <algorithm>
#include <vector>
#include <functional> // greater , less 헤더함수

using namespace std;

// compare 함수 (내림차순)
bool comp_desc(int a , int b){
    return a>b;
}

int main(int args ,  char** argv){
    // compare 함수 생략
    vector<int> v = {4,5,2,1,3};
    sort(v.begin() , v.end());
    cout << "No compare function : " ;
    for(auto x : v) cout << x << ' '; 
    cout << endl;

    // 내림차순 compare 함수
    vector<int> v1 = {4,5,2,1,3};
    sort(v1.begin() , v1.end() , comp_desc);
    cout << "descending compare function : " ;
    for(auto x : v1) cout << x << ' ';
    cout << endl; 

    // greater 함수
    vector<int> v2 = {4,5,2,1,3};
    sort(v2.begin() , v2.end(),greater<>());
    cout << "greater function : " ;
    for(auto x : v2) cout << x << ' ';
    cout << endl;
    
    // less 함수
    vector<int> v3 = {4,5,2,1,3};
    sort(v3.begin() , v3.end(),less<>());
    cout << "less function : " ;
    for(auto x : v3) cout << x << ' ';
    
}

 

 

terminal 출력

 

반응형
Comments