C++ unordered_map VS map 컨테이너 차이는...?

죠랭이·2021년 3월 1일
0

알고리즘

목록 보기
2/3
post-thumbnail

알고리즘 문제를 풀다 C++에서 hash table 용도로 활용하는 map 컨테이너에 대한 궁금증이 생겨 찾아보았다.

일반적으로, 나의 경우 map 컨테이너를 주로 사용하는데 어떤 코드에서는 unordered_map 컨테이너를 활용하여 문제를 해결하기도 하였다. 그렇다면 여기서, map과 unordered_map은 과연 어떤 차이가 있을까?

Reference에 따르면,

map: http://www.cplusplus.com/reference/map/map/?kw=map
unordered_map: http://www.cplusplus.com/reference/unordered_map/unordered_map/?kw=unordered_map

map: pair<const Key, T> 로 이루어진 컨테이너. Key값 기준으로 sorting 되어있음. 이진탐색트리로 구현되면서 sorting하므로 unordered_map보다 value값을 찾는 데에 오래걸릴 수 있음.

unordered_map: map과는 달리 Key 혹은 Value 기준으로 sorting 되어있지 않은 컨테이너. Key값으로 hash value를 찾는 데에 시간이 적게 걸림.(Average: O(1)) 우리가 흔히 사용하는 hash 자료구조에 해당된다고 보면 됨.

정리하면, 알고리즘 자료구조에서는 unordered_map을 일반적인 hash table 자료구조로 사용한다.
(알고리즘 문제에서는 괜찮지만 실무 혹은 개발 프로젝트에서 hash table 활용 시, hash bucket collison 이슈가 발생하지 않도록 하는 것에 주의를 기울여야 한다...!)

profile
슈퍼 개발자를 목표로 하는 주니어

0개의 댓글