영벨롭 개발 일지

[C++]STL 해시 테이블 unordered_set과 unordered_map 본문

Programming Language/C & C++

[C++]STL 해시 테이블 unordered_set과 unordered_map

영벨롭 2022. 4. 26. 14:26

[헤더파일]

 

#include<unordered_set>
#include<unordered_map>

 

 

 

[unordered_set과 unordered_map]

 

 C++ STL은 체이닝을 사용한 해시 테이블인 std::unordered_set과 std::unordered_map을 제공합니다.

 

 unordered_set<Key>는 키만 저장할 수 있고, unordered_map<Key, Value>는 키와 값을 함께 저장할 수 있습니다. 

 

 Key와 Value는 모든 데이터 타입에 대해 사용할 수 있습니다. 

 

 unordered_set과 unordered_map 모두 중복된 키를 허용하지 않습니다. 

 

기본형
unordered_set<data_type> set1;
unordered_map<data_type1, data_type2> map1;

 

 

 

 해시 테이블의 각 행은 키 또는 키와 값의 쌍을 저장하는 벡터입니다. 여기서 각 행을 버킷(bucket)이라고 부릅니다. 즉, 키로부터 해시 값을 구하면 이에 해당하는 버킷에 접근할 수 있습니다. 각 버킷은 하나의 리스트를 가집니다. 

 

 

 

[메소드]

 

메소드 설명
begin() 첫 번째 원소의 반복자 리턴
end() 마지막 원소 다음의 반복자 리턴
clear() 저장한 모든 원소 삭제
empty() 비어 있다면 true, 그렇지 않다면 false 리턴
erase(key) key의 원소를 제거
find(key) key와 연관된 원소의 반복자 리턴
count(key) 특정 key를 가진 원소의 개수
insert({key, value}) 원소 추가
size() 원소의 개수 리턴
swap(map2) 두 컨테이너의 내용을 교환
map[idx] idx번째 원소를 참조
속도: 빠름 / 안전 X
at(idx) idx번째 원소를 참조
속도: 느림 / 안전 O
반응형