티스토리 뷰
Map 맵
각 노드가 key와 value의 쌍으로 이루어진 red-black tree이다.
key를 기준으로 정렬된 상태이기 때문에 검색, 삽입, 삭제 등의 속도가 빠르다.
주의할 점은 key가 중복이면 새로 추가하는 value값으로 덮어쓰기가 된다.
만약, key값 중복을 원하면 map말고 multimap을 사용한다.
#include <map>
map<key,value>처럼 key, value의 pair로 선언
map<int,int> m : key와 value 자료형이 int인 map m 선언
m.size() : 노드 개수 리턴
m.begin() : 첫 번째 원소 iterator
m.end() : 마지막 원소 iterator
m.find(a) : key가 a인 노드 찾아 해당 iterator 리턴, 만약 존재하지 않으면 마지막 iterator 리턴
m.insert(make_pair(a,b)) : a key의 b value 삽입
m.erase(a) : key가 a인 원소 삭제
m.clear() : 모든 원소 삭제
m.count(a) : key가 a인 원소들 개수 리턴
ex) unsorted 배열과 sorted 배열을 비교하여 sorting count 계산 코드
vector <int> unsorted_arr = { 4,3,1,2 };
vector <int> sorted_arr(unsorted_arr);
sort(sorted_arr.begin(), sorted_arr.end());
map<int, int> m;
for (int i = 0; i < arr.size(); i++) m[arr[i]] = i;
int ans = 0;
for (int i = 0; i<unsorted_arr.size(); i++) {
if (unsorted_arr[i] != sorted_arr[i]) {
int tmp = m[sorted_arr[i]]; swap(unsorted_arr[tmp], unsorted_arr[i]);
m[unsorted_arr[tmp]] = tmp; ans++;
}
}
cout << ans;
작성자 : 히더
'자료구조 > STL' 카테고리의 다른 글
[STL] 시퀀스 컨테이너와 연관 컨테이너 (0) | 2018.10.03 |
---|---|
[STL] Set 셋 (0) | 2018.10.02 |
[STL] Deque 덱 (0) | 2018.09.30 |
[STL] Pair 페어 (0) | 2018.09.07 |
[STL] Vector 벡터 (0) | 2018.09.07 |
- Total
- Today
- Yesterday
- 2018 카카오 블라인드 채용
- 17837
- 삼성
- SW Expert Academy
- 2018 KAKAO BLIND RECRUITMENT
- 새로운 게임 2
- 역량 테스트
- 팁
- 입출력
- 17779
- 시간 복잡도
- 백준
- 알고리즘
- 미세먼지 안녕!
- DFS
- 연구소 3
- STL
- 이차원 배열과 연산
- 트렌드
- scanf
- 17142
- 17143
- 17140
- string
- hackerrank
- SWEA
- 게리맨더링 2
- DP
- boj
- 17144
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |