Sort() 함수
- C++의 algorithm 헤더에 포함되어 있음
<오름차순>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> num_list = {2, 1, 5, 4, 3};
sort(begin(num_list), end(num_list));
for (int i=0; i<num_list.size(); i++){
cout << num_list[i] << " ";
}
return 0;
}
1 2 3 4 5
<내림차순>
1. 함수 이용
- 함수를 추가하면 해당 함수의 반환 값에 맞게 정렬을 할 수 있음을 이용한다.
- 왼쪽의 숫자가 오른쪽 숫자보다 크도록 함수 설정
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool compare(int a, int b){
return a > b;
}
int main() {
vector<int> num_list = {2, 1, 5, 4, 3};
sort(begin(num_list), end(num_list), compare);
for (int i=0; i<num_list.size(); i++){
cout << num_list[i] << " ";
}
return 0;
}
5 4 3 2 1
2. rbegin, rend 이용
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> num_list = {2, 1, 5, 4, 3};
sort(rbegin(num_list), rend(num_list));
for (int i=0; i<num_list.size(); i++){
cout << num_list[i] << " ";
}
return 0;
}
5 4 3 2 1
<특정 변수 기준 정렬>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class Student {
public:
string name;
int score;
Student(string name, int score){
this->name = name;
this->score = score;
}
bool operator < (Student &student){
return this->score < student.score;
}
};
int main() {
Student students[] = {
Student("Steven", 11),
Student("Daniel", 15),
Student("Kane", 8)
};
sort(students, students + 3);
cout << length << endl;
for (int i=0; i<3; i++){
cout << students[i].name << " ";
}
return 0;
}
Kane Steven Daniel
(참고: https://blog.naver.com/ndb796/221227975229)