STL - 22 (hash_map - 3)

Youngmin Choi·2021년 6월 29일
0

STL

목록 보기
22/34
post-thumbnail

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. 너무 빈번하게 자료르 삽입/삭제하지 않는다!

profile
Always, Continually, In all circumstance

0개의 댓글