더북(TheBook)

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

기본적으로 이들 컨테이너는 최대 1의 부하율을 가집니다. 해시 테이블 크기보다 원소 개수가 많아지게 되면 곧바로 해시 테이블 크기를 키우고, 해시 함수를 변경하는 재해싱이 일어납니다. 그 결과 부하율은 1보다 작아지게 됩니다. 사용자가 강제로 rehash() 함수를 호출하여 재해싱을 할 수도 있습니다. max_load_factor(float) 함수를 사용하여 기본값이 1로 되어 있는 부하율 최대 한계치를 변경할 수도 있습니다. 부하율이 지정된 최대 한계치를 넘어가면 재해싱이 발생합니다.

std::unordered_setstd::unordered_map 컨테이너는 검색, 삽입, 삭제 등의 보편적인 기능을 제공합니다. 모든 원소에 차례대로 접근할 수 있도록 반복자 기능도 제공하고, 벡터나 배열 같은 다른 컨테이너로부터 곧바로 std::unordered_set 또는 std::unordered_map을 구성할 수 있는 생성자도 제공합니다. std::unordered_map[] 연산자를 이용하여 주어진 키에 해당하는 값을 받을 수도 있습니다.

다음 연습 문제를 통해 std::unordered_setstd::unordered_map의 사용 방법에 대해 알아보겠습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.