먼저, 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를 실시하게 되어 사용자가 원하는 대로 정렬할 수 있게 해준다.
'언어 > C++' 카테고리의 다른 글
[C++] string 헤더파일을 include 하지 않아도 잘 실행되는 이유 (0) | 2024.01.28 |
---|---|
[C++] vector 최댓값, 최솟값 구하기 (+ 인덱스까지) (0) | 2024.01.26 |
[C++] 오류 : vector subscript out of range (0) | 2024.01.25 |
[C++] 오류 : E0142) 식에 대체 포인터 형식이 있어야 하는데 "int" 형식이 있음 (2) | 2024.01.24 |
[C++] vector 초기화 (1차원, 2차원) (0) | 2024.01.24 |