vector<pair<int, int>> 형태 sort 사용하기

한창희·2022년 1월 6일
0

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 값을 추가로 비교해서 정렬을 할 수도 있다


profile
매 순간 최선을 다하자

0개의 댓글