pair<int, int> 타입의 vector를 원하는 기준에 따라 sort 함수를 통해 정렬 할 수 있다
기본적으로 다음과 같이 사용하면 디폴트로 pair의 first 기준 오름차순 정렬이 된다
vector<pair<int, int>> v;
sort(v.begin(), v.end())
#include <stdio.h>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
vector<pair<int, int>> v;
// pair first 기준 내림차순 정렬
bool compare1(pair<int, int> a, pair<int, int> b) {
return a.first > b.first;
}
int main() {
v.push_back(make_pair(1, 5));
v.push_back(make_pair(5, 4));
v.push_back(make_pair(2, 3));
v.push_back(make_pair(7, 2));
v.push_back(make_pair(5, 1));
sort(v.begin(), v.end(), compare1);
for (int i = 0; i < v.size(); i++)
printf("%d %d\n", v[i].first, v[i].second);
return 0;
}
위와 같이 compare 함수를 통해 원하는 기준으로 오름차순/내림차순 정렬을 할 수 있다
위 경우 pair의 first를 기준으로 내림차순 정렬을 구현했다
결과 역시 first 값인 7 5 5 2 1 내림차순으로 정렬된 것을 알 수 있다
compare 함수에서 pair의 first의 값이 같은 경우에는 second 값을 추가로 비교해서 정렬을 할 수도 있다