[cpp] map을 value 기준으로 정렬하기

map의 기본 정렬

map의 원소들은 key 값을 기준으로 오름차순 정렬되어있다. 따라서 내림차순으로 정렬하고 싶다면 int 형 기준으로 map<int, int, greater> 를 사용해주면 된다.

만약 key가 아니라 value로 정렬하고 싶다면?

이때는 map의 요소들을 vector로 옮겨서 정렬해야한다.
1) map->vector
2) sort vector

map<char, int> m;
vector<pair<char,  int>> v(m.begin(), m.end());

sort(v.begin(), v.end(), comp);

만약 value의 오름차순 정렬해야 하기 때문에 comp 함수를 작성하면 된다. (내림차순으로 정렬시에도 마찬가지)

static bool comp(pair<char, int>& a, pair<char, int>& b){
	return a.second < b.second;
}

leetcode에서 문제를 풀다가 위 방법을 사용했다.

좋은 웹페이지 즐겨찾기