언어/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를 실시하게 되어 사용자가 원하는 대로 정렬할 수 있게 해준다.