Map을 이용하기 위한 기본적인 문법은 아래와 같다.
// 선언
map<int, int> m;
// key 1에 value는 10 대입
m[1] = 10;
// key값이 1인 요소를 찾음
if (m.find(1) != m.end()) {
cout << "맵에 1이라는 키가 있다.\n";
}
else {
cout << "맵에 1이라는 키가 없다.\n";
}
맵은 기본적으로 key값을 기준으로 오름차순 정렬되어 있다.
내가 풀고자 했던 문제에서는 value값을 기준으로 오름차순 정렬을 해야 했다. 이 경우에는 vector에 담아서 정렬해 쓸 수 있다.
vector<pair<int,int>> vec(m.begin(), m.end());
sort(vec.begin(), vec.end(), cmp);
value 기준으로 오름차순으로 정렬되도록 cmp함수는 다음과 같이 작성했다.
bool cmp(const pair<int,int>& a, const pair<int,int>& b) {
if (a.second == b.second) return a.first < b.first;
return a.second < b.second;
}
아래 구문으로 찍어서 테스트해보자.
for (auto v : vec) {
cout << "key: "<< v.first << "\n";
cout << "value: " << v.second << "\n";
}
'Language > C++' 카테고리의 다른 글
[C++] 코테에서 자주 쓰는 문법 정리 (0) | 2025.03.26 |
---|