programming language/Structure

Hash 개념 정리, std::unordered_map

jellylucy 2021. 8. 5. 12:31

1. 해시 테이블이란

해시테이블은 key, value로 데이터를 저장하는 자료구조이다.

[해시함수]

ex) 1~10의 값을 저장할 때, %연산을 이용하여 배열크기를 줄여 사용

%연산이 같은 두개이상의 원소를 같은 배열원소에 넣는 경우. 이 때 충돌이 발생할 수 있다.

 

 

2. #include <unordered_map>

해시 테이블로 구현한 자료구조로 map보다 더 빠른 탐색이 가능하다.

중복된 데이터를 허용하지 않고, map에 비해 데이터가 많을 시 더 좋은 성능을 보인다.

empty() 맵이 비어있는지 확인하는 함수
비어있으면 1을 반환한다.
size()  
operator []
um [ "key" ] = 2;
map_name[key] = value
find(key) key에 해당하는 원소를 찾는 함수
count(key) key에 해당하는 원소의 개수를 반환하는 함수
insert( {key, value} )
ex) um.insert(make_pair("key", 1);
pair <key, value> 를 추가하는 함수
erase ( key)  
clear()  
operator =   
unordered_map <string, int> um;  
탐색방법
begin(), end()
key : iter->first, value : iter->second
반복문 사용시
auto , pair< key_type, value_type>
 

 

std::map 은 키의 순서를 유지한다

std::unordered_map은 해시테이블을 사용해 키의 순서를 유지하지 않는다.