sort 함수 원형
// #1
template<class RandomAccessIterator>void
sort(RandomAccessIterator first, RandomAccessIterator last);
// #2
template<class RandomAccessIterator, class Compare>void
sort(RandomAccessIterator first, RandomAccessIterator last, Compare comp);
- #1
배열의 시작 주소, iterator의 begin(), 배열의 끝 주소인 end()를 매개변수로 받는다. - #2
iterator의 begin, end와 추가로 Compare 함수를 매개변수로 넘겨받는다. - Compare 함수란?
Sort 라이브러리의 참 거짓 관계를 재정의하는 사용자 정의 함수이다
오름차순 정렬
// 2차원 벡터 선언
vector<vector<int>> v(5, vector<int>(2));
/* input >> v
3 4
1 1
1 -1
2 2
3 3
*/
sort(v.begin(), v.end()); // 오름차순 정렬
PrintArr(v, 5); // 출력
/* output << v
1 -1
1 1
2 2
3 3
3 4
*/
내림차순 정렬
// greater<자료형>() 클래스를 인수로 넘겨줌
sort(v.begin(), v.end(), greater<vector<int>>());
Compare 함수
bool Compare(vector<int>& A, vector<int>& B)
{
if (A[1] == B[1])
return A[0] < B[0];
return A[1] < B[1];
}
int main(void)
{
int i = 0, j = 0;
int n = 0;
cin >> n;
vector<vector<int>> v(n, vector<int>(2));
InputArr(v, n); // Input
sort(v.begin(), v.end(), Compare);
PrintArr(v, n); // Output
return 0;
}
https://www.acmicpc.net/problem/11651
위 문제를 풀면서 Compare를 적용한 코드이다. 비교 대상이 되는 두 원소에 대해 참 거짓 관계를 사용자가 직접 정의할 수 있다. 위에 코드는 y값이 동일할 경우 x값을 오름차순으로 정렬하는 코드이다. compare 함수는 두 원소의 대소관계를 비교 한 후 bool 값을 리턴한다.
'과거 자료' 카테고리의 다른 글
[#12] Binary Search : 이진 탐색 (0) | 2022.09.01 |
---|---|
[#3] STL :: iterator (이터레이터), for_each, istream_iterator, ostream_iterator (0) | 2022.08.29 |
[#2] STL :: Vector Template Class (0) | 2022.08.25 |
[#1] 표준 템플릿 라이브러리(STD; Standard Template Library) (0) | 2022.08.25 |
[#1] STD :: String Class (0) | 2022.08.24 |