map이란?
: 트리 , 즉 계층 구조로 이루어진 pair형태의 stl임.
key값과 value값을 가지고 있으며,
루트 노드를 기준으로 해서 삽입, 삭제, 탐색이 이루어지므로, logN의 비용을 가짐.
삽입하는 방법.
: 3가지가 있음.
insert, 인덱스 접근, make_pair
주의할 점 : 인덱스 접근의 경우, 삽입이든, 뭘 하든 디폴트값 0 으로 second값이 삽입됨.
map을 쓸까? unordered_map을 쓸까?
-> 핵심은 정렬 유무에 차이가 있음.
수많은 데이터 중에서 , 디버깅 중 원하는 데이터의 키값을 정렬된 상태에서 보고 싶다면 : map이지만,
그냥 굳이 속도 차원으로 보자면 unordered_map을 사용함.
- 일단 밑의 예시를 보면 key값 2개일때 map은 가능하지만, hash는 불가능하다는 것을 통해
- map을 먼저 쓰고, 테스트 케이스에서 시간초과 날 경우에!
- hash를 사용하도록 하자!
map 우선순위 변경하기
- map<string, int, greater>m;
: 이렇게 하면 키값의 내림차순으로 정렬된다.
- value값
map 삭제하기
- erase 함수를 사용하자.
m.erase( key값 )
기존의 값 변경 불가능 한 삽입
기존의 값 변경 가능한 삽입
key값은 2개로 사용할때
-
map은 가능하지만!
-
hash는 안된다는 점을 알고 있어야 한다.
key값은 1개이고, value가 2개일때
-
map은 가능하다.
-
hash도 가능하다.