std::sort()
- quick sort 보다 빠르고, 배열 뿐만 아니라 벡터에서의 정렬도 지원한다.
- #include < algorithm > 선언해야됨
- sort 함수는 두가지 형태
- 2가지 인자 받는 경우
- 첫번째 인자 : 데이터의 반복자
- 두번째 인자 : vector.end() 했을 때 반환되는 마지막 반복자
- 기본으로 오름차순 정렬
- 3가지 인자 받는 경우
- 첫번째, 두번째는 위와동일
- 세번째 인자 : 다른 기준으로 정렬해야할 때 전달하는 함수객체
#include <iostream>
#inlcude <vector>
#inlcude <algorithm>
using namespace std;
int main()
{
int num[] = {2, 4, 1, 5, 3};
sort(num, num+5);
sort(num, num+5, greater<int>());
vector<string> fruits {"orange", "banana", "apple", "pear", "lemon"};
sort(fruits.begin(), fruits.end());
for (auto s : fruits)
cout << s << endl;
}
- vector 와 array 의 정렬 방법이 조금 달라서 헷갈린다.
- begin(), end() 를 사용하면된다.
- sort(std::begin(num), std::end(num))
- 근데 통상적으로 위 코드처럼사용함.
- class 를 원소로 갖는 vector는 원소 class 가 > operator 가 정의되어있어야됨.
- sort 자체를 이욯애서 정렬 기준을 바꿀 수 있다.
bool cmp_age_desc(const Person& a, const Person& b)
{
return a.age > b.age;
}
bool cmp_name_desc(const Persn& a, const Person& b)
{
return a.name < b.name;
}
int main()
{
...
sort(students.begin(), students.end(), cmp_age_desc);
}