map Container는 (key, value) pair의 원소로 구성되어있다.
가장 큰 차이는
map은 레드 블랙 트리로 구현
unordered_map은 hash 방식으로 구현
즉, map에 들어가는 원소들은 key에 따라 정렬되어 저장된다.
(레드 블랙 트리를 공부해야겠다.... 했지만, 이해가 안 간다.)
검색/삽입/삭제: O(logN)
unordered_map은 key의 hash값에 따라서 저장된다.
검색/삽입/삭제:O(1)
이것만 보고, unordered_map 쓰면 되겠네~로 끝나면 안 된다.
어쩔 때는, map을 쓰고, 또 언제는 unordered_map을 쓰는가?
내 주관적인 답변:
개발자가 map과 unordered_map 상황에 맞게 쓰면 될 것 같다.
--> 미안합니다.
map 은 데이터가 삽입/삭제가 빈번하면, 균형을 맞추려는 레드 블랙 트리에서 성능 저하를 일으킬 수 있다.
삽입/삭제가 빈번할 것 같은지 검토가 필요.
unordered_map 은 hash 기반이다. 즉, 데이터가 많으면 해시 충돌 가능성이 높아진다.
데이터의 수? 기준이 필요하겠지만, 충돌 가능성 검토가 필요하다.
'개발 > C++' 카테고리의 다른 글
std::function 이란? (0) | 2022.04.11 |
---|---|
JsonCpp 사용법 (2) | 2022.02.04 |
인라인 함수(inline function) (0) | 2021.03.17 |
함수 호출 규약(Calling convention) (0) | 2021.03.17 |
코딩 컨벤션 맛보기 (0) | 2020.03.29 |