1. 해시맵(hash_map)의 자료구조
- hash_map의 자료구조는 '해시 테이블'이다. '해시 테이블'에 자료를 저장할 때는 key값을 해시 함수에 대입하여 버킷 번호가 나오면 그 버킷의 빈 슬롯에 자료를 저장한다.
- key값을 해시 함수에 입력하여 나오는 버킷 번호에 자료를 넣으므로 많은 자료를 저장해도 삽입, 삭제, 검색 속도가 거의 일정하다.
2. 해시맵(hash_map)을 사용할 때와 사용하지 않을 때
- 해시맵(hash_map)은 '해시 테이블'을 자료구조로 사용하므로, '해시 테이블'에 대해 알면 장단점을 파악할 수 있다.
장 점 :
'해시 테이블'은 많은 자료를 저장하고 있어도 검색이 빠르다.
단 점 :
그러나 저장한 자료가 적을 때는 메모리 낭비와 검색시 오버헤드가 생긴다.
- 해시맵(hash_map)은 해시 테이블을 사용하므로 검색이 빠르다라는 것만 생각하고 무분별하게 사용해서는 안된다!
1. 컨테이너에 추가/삭제 하는 것은 list나 vector, deque이 hash_map보다 빠르다! 2. 또 적은 요소를 저장하고 검색할 때에는 vector나 lsit가 훨씬 빠를 수 있다. 3. 수천의 자료를 저장하여 검색을 하는 경우에 hash_map을 사용하는 것이 좋다.
결 론 : 사용해야할 때는?
1. 많은 자료를 저장하고, 검색속도가 빨라야 한다!
2. 너무 빈번하게 자료르 삽입/삭제하지 않는다!