언어/C++

[C++] vector 정렬 (오름차순, 내림차순, 마음대로)

study_memo 2024. 1. 26. 12:52

먼저, algorithm 헤더를 불러와야 한다. 

#include <algorithm>

 

1. 오름차순 정렬

sort (벡터이름.begin(), 벡터이름.end()); 

 

 

2. 내림차순 정렬

sort(벡터이름.begin(),벡터이름.end(), greater<int>()); 

/*greater<자료형>인데 여기서는 int를 예시로 함.
greater함수와 vector의 자료형을 맞춰야 정상적으로 정렬이 된다. */

 

표준 라이브러리 내에 있는 greater() 라는 비교 함수를 마지막 파라미터로 전달하여,

숫자가 클수록 앞으로 정렬되게 설정해준다.  

 

 

3. 사용자가 원하는 대로 정렬

sort (벡터이름.begin(), 벡터이름.end(), 사용자가 만든 함수); 
//<예시>
bool compare(string a, string b){
    return a.size() < b.size();            //string의 길이가 짧을 수록 앞으로 정렬됨
}

sort (v.begin(), v.end(), compare); 
//주의할 점: 인자로 compare()를 넣는 게 아니라 compare만 넣어야 한다. 
//힘수 이름은 compare가 아니라 다른 것이어도 상관없다.

//sort함수에서 세 번째 인자로 들어간 함수를 인식하여, 자동으로 앞의 것을 a에, 뒤의 것을 b에 넣어주게 된다.
//a.size() < b.size()가 참이면 1, 거짓이면 0을 반환하는 함수이므로, 참이면 sort를 실시하게 되어 사용자가 원하는 대로 정렬할 수 있게 해준다.