[C++ STL] Sort
2021. 4. 13. 23:34
1. Sort ?
- 퀵 정렬 (quick sort) 기반으로 구현된 함수, O(nlogn)
- sort(first, last) - [first, last) 범위의 원소를 정렬 (default는 오름차순)
2. 사용법
2.1 오름차순/내림차순 정렬
#include <algorithm>
int arr[10] = {3, 7, 2, 4, 1, 0, 9, 8, 5, 6};
vector<int> v;
v.push_back(3);
v.push_back(7);
v.push_back(2);
// 오름차순 정렬
sort(arry, array+10);
sort(v.begin(), v.end());
sort(v.begin(), v.end(), less<int>());
// 내림차순 정렬
sort(v.begin(), v.end(), greater<int>());
2.2 사용자 정의 기준 정렬
Compare
// Student 클래스 정의
class Student{
public:
string name;
int age;
Student(string name, int age):name(name),age(age){}
};
bool compare(Student a, Student b){
if(a.name == b.name){ //이름이 같으면, 나이 기준 오름차순 정렬
return a.age < b.age;
}else{ //이름 다르면, 이름 기준 사전순 정렬
return a.name < b.name;
}
}
sort(v.begin(), v.end(), compare); // compare 함수 기준 정렬
Operator overloading (연산자 오버로딩)
class Student{
public:
string name;
int age;
Student(string name, int age):name(name),age(age){}
//연산자 오버로딩(operator overloading)
bool operator<(Student s) const{
if(this->name == s.name){
return this->age < s.age; // 나이 기준 오름차순 정렬
}else{
return this->name < s.name; // 이름 기준 사전순 정렬
}
}
};
sort(v.begin(), v.end());
'C++' 카테고리의 다른 글
[C++] string 클래스 멤버함수 (0) | 2021.04.20 |
---|---|
[C++ STL] 최소값, 최대값 구하기 - min, max, min_element, max_element (0) | 2021.04.16 |
[C++ STL] List (0) | 2021.04.13 |
[C++] 표준 템플릿 라이브러리(STL: Standard Template Library) (0) | 2021.04.13 |
[C++ STL] find (0) | 2021.04.10 |