[STL] - map
map
map
- map은 각 노드가 key와 value쌍으로 이루어진 트리이다.
- 앞부분은 key, 뒷부분은 value라고 칭한다.
//자료형은 아무거나 가능<key, value> map<pair<int, string>> mp;
- 값을 insert하면 key값을 기준으로 오름차순으로 자동정렬된다.
- 중복을 허용하지 않는다.
map을 value 기준으로 정렬하는 방법
- map을 vector로 변환
- 비교연산자 사용자 정의
- 사용자 정의 compare sort
#include <vector>
#include <algorithm>
#include <map>
using namespace std;
bool comp(pair<int, int> &a, pair<int, int> &b) {
// 괄호 < : 오름차순기준
// 괄호 > : 내림차순기준
//second값 비교시 다르면 second(value)기준 오름차순
if (a.second != b.second) return a.second < b.second;
//second값 비교시 같으면 first(key)기준 내림차순
return a.first > b.first;
}
vector<int> solution(vector<int> numlist, int n) {
vector<int> answer;
map<int, int> mp;
//map값 넣기
for (auto num : numlist) {
mp.insert({num, abs(n - num)});
}
vector<pair<int, int>> vec(mp.begin(), mp.end());
sort(vec.begin(), vec.end(), comp);
for (auto v : vec) answer.push_back(v.first);
return answer;
}