map과 unordered_map(hash_map) 중 무엇을 사용할까?
map이 내부 구조가 트리(레드-블랙트리) 형태로 되어 있기 때문에
기본 로직에 따라 자동 정렬되므로 logN의 시간이 추가된다.
반면에, unordered_map(hash_map)은 hash-table 구조로 되어 있기 때문에
데이터를 넣어도 자동으로 정렬되지 않으므로 logN의 시간을 아낄 수 있다.
그러나, 내부 hash-function에 의해서 성능이 저하되는 경우에 (특히, 문자열)
map보다 오래 걸릴 수도 있다.
정리해보면 기본적인 경우에는
둘 다 'key-value' 형식으로 되어있으므로 key를 이용하여 정렬된 결과를 얻을 것이 아니면
unordered_map을 이용하는 편이 나은 것 경우가 많다.
(대부분의 경우의 우리가 원하는 것은 key를 이용해 바로 value를 가져오고 싶기 때문)
물론 경우에 따라서 hash-function을 작성하기 나름이다.
아래 링크는 참고한 사이트
http://veblush.blogspot.com/2012/10/map-vs-unorderedmap-for-string-key.html
unordered_map을 적절히 사용하여서 해결할 수 있는 문제는 다음과 같다.
(map을 사용하였을 때와 unordered_map을 사용하였을 때, 시간 차이를 느낄 수 있다.)
https://programmers.co.kr/learn/courses/30/lessons/60060
기본 로직에 따라 자동 정렬되므로 logN의 시간이 추가된다.
반면에, unordered_map(hash_map)은 hash-table 구조로 되어 있기 때문에
데이터를 넣어도 자동으로 정렬되지 않으므로 logN의 시간을 아낄 수 있다.
그러나, 내부 hash-function에 의해서 성능이 저하되는 경우에 (특히, 문자열)
map보다 오래 걸릴 수도 있다.
정리해보면 기본적인 경우에는
둘 다 'key-value' 형식으로 되어있으므로 key를 이용하여 정렬된 결과를 얻을 것이 아니면
unordered_map을 이용하는 편이 나은 것 경우가 많다.
(대부분의 경우의 우리가 원하는 것은 key를 이용해 바로 value를 가져오고 싶기 때문)
물론 경우에 따라서 hash-function을 작성하기 나름이다.
아래 링크는 참고한 사이트
http://veblush.blogspot.com/2012/10/map-vs-unorderedmap-for-string-key.html
unordered_map을 적절히 사용하여서 해결할 수 있는 문제는 다음과 같다.
(map을 사용하였을 때와 unordered_map을 사용하였을 때, 시간 차이를 느낄 수 있다.)
https://programmers.co.kr/learn/courses/30/lessons/60060
댓글
댓글 쓰기