compare 함수를 직접 구현하지 않아도 오름차순 sorting은 가능하다
#include <algorithm>
int main() {
vector< pair<int, int> > arr;
arr.push_back(make_pair(1, 3));
arr.push_back(make_pair(2, 9));
arr.push_back(make_pair(0, 7));
arr.push_back(make_pair(1, 6));
arr.push_back(make_pair(2, 3));
arr.push_back(make_pair(6, 10));
arr.push_back(make_pair(8, 8));
sort(arr.begin(), arr.end());
for (int i = 0; i < 7; i++) {
printf("%d %d\n", arr[i].first, arr[i].second);
}
// 출력
// 0 7
// 1 3
// 1 6
// 2 3
// 2 9
// 6 10
// 8 8
만약 내림차순 sorting을 하고 싶으면 compare 함수를 구현하면 된다.
당연히 오름차순일 때도 가능하다
#include <algorithm>
bool compare(const pair<int, int>&a, const pair<int, inr>&b) {
if (a.first == b.first) {
return a.second > b.second;
}
return a.first > b.first
// 부등호 방향으로 오름차순/내림차순을 구분한다
}
int main() {
vector< pair<int, int> > arr;
arr.push_back(make_pair(1, 3));
arr.push_back(make_pair(2, 9));
arr.push_back(make_pair(0, 7));
arr.push_back(make_pair(1, 6));
arr.push_back(make_pair(2, 3));
arr.push_back(make_pair(6, 10));
arr.push_back(make_pair(8, 8));
sort(arr.begin(), arr.end(), compare);
for (int i = 0; i < 7; i++) {
printf("%d %d\n", arr[i].first, arr[i].second);
}
// 출력
// 8 8
// 6 10
// 2 9
// 2 3
// 1 6
// 1 3
// 0 7