unordered_set 클래스
템플릿 클래스는 const Key 형식의 다양한 길이의 요소 시퀀스를 제어하는 개체를 설명합니다. 시퀀스는 해시 함수로 약하게 정렬됩니다. 즉, 시퀀스를 버킷이라고 하는 하위 시퀀스의 정렬된 집합으로 분할합니다. 비교 함수는 각 버킷 내에서 요소 쌍이 동일하게 정렬되었는지 여부를 확인합니다. 각 요소는 정렬 키와 값으로 사용됩니다. 시퀀스는 최소한 모든 버킷이 대략 동일한 크기일 경우 시퀀스의 요소 수와 상관없이 작업 수를 사용하여 임의 요소를 조회, 삽입, 제거하는 방식으로 나타냅니다(일정 시간). 모든 요소가 하나의 버킷에 있는 최악의 경우에는 작업 수가 시퀀스의 요소 수에 비례합니다(선형 시간). 또한, 요소를 삽입할 경우 어떤 반복기도 무효화되지 않으며, 요소를 제거할 경우 제거된 요소를 가리키고 있는 반복기만 무효화됩니다.
template<class Key,
class Hash = std::hash<Key>,
class Pred = std::equal_to<Key>,
class Alloc = std::allocator<Key> >
class unordered_set;
매개 변수
매개 변수 |
설명 |
Key |
키 형식입니다. |
Hash |
해시 함수 개체 형식입니다. |
Pred |
같음 비교 함수 개체 형식입니다. |
Alloc |
할당자 클래스입니다. |
멤버
형식 정의 |
설명 |
저장소 관리를 위한 할당자의 형식입니다. |
|
제어되는 시퀀스에 대한 상수 반복기의 형식입니다. |
|
제어되는 시퀀스에 대한 상수 버킷 반복기의 형식입니다. |
|
요소에 대한 상수 포인터의 형식입니다. |
|
요소에 대한 상수 참조의 형식입니다. |
|
두 요소 사이의 부호가 있는 거리의 형식입니다. |
|
해시 함수의 형식입니다. |
|
제어되는 시퀀스에 대한 반복기의 형식입니다. |
|
비교 함수의 형식입니다. |
|
정렬 키의 형식입니다. |
|
제어되는 시퀀스에 대한 버킷 반복기의 형식입니다. |
|
요소에 대한 포인터의 형식입니다. |
|
요소에 대한 참조의 형식입니다. |
|
두 요소 사이의 부호가 없는 거리의 형식입니다. |
|
요소의 형식입니다. |
멤버 함수 |
설명 |
제어되는 시퀀스의 시작을 지정합니다. |
|
키 값에 대한 버킷 개수를 가져옵니다. |
|
버킷 개수를 가져옵니다. |
|
버킷의 크기를 가져옵니다. |
|
제어되는 시퀀스의 시작을 지정합니다. |
|
제어되는 시퀀스의 끝을 지정합니다. |
|
모든 요소를 제거합니다. |
|
지정한 키와 일치하는 요소의 수를 찾습니다. |
|
생성된 요소를 추가합니다. |
|
힌트와 함께 생성된 요소를 추가합니다. |
|
요소가 있는지 여부를 테스트합니다. |
|
제어되는 시퀀스의 끝을 지정합니다. |
|
지정된 키가 일치하는 범위를 찾습니다. |
|
지정된 위치에 있는 요소를 제거합니다. |
|
지정된 키와 일치하는 요소를 찾습니다. |
|
저장된 할당자 개체를 가져옵니다. |
|
저장된 해시 함수 개체를 가져옵니다. |
|
요소를 추가합니다. |
|
저장된 비교 함수 개체를 가져옵니다. |
|
버킷당 평균 요소 수를 계산합니다. |
|
최대 버킷 개수를 가져옵니다. |
|
버킷당 최대 요소 수를 가져오거나 설정합니다. |
|
제어된 시퀀스의 최대 크기를 가져옵니다. |
|
해시 테이블을 다시 빌드합니다. |
|
요소의 수를 셉니다. |
|
두 컨테이너의 내용을 바꿉니다. |
|
컨테이너 개체를 만듭니다. |
연산자 |
설명 |
해시 테이블을 복사합니다. |
설명
개체는 저장된 두 개체, unordered_set::key_equal 형식의 비교 함수 개체, unordered_set::hasher 형식의 해시 함수 개체를 호출하여 제어하는 시퀀스를 정렬합니다. 첫 번째 저장된 개체는 멤버 함수 unordered_set::key_eq()를 호출하여 액세스하며, 두 번째 저장된 개체는 멤버 함수 unordered_set::hash_function()을 호출하여 액세스합니다. 특히 Key 형식의 모든 값 X 및 Y의 경우 두 인수 값이 순서 지정이 동일할 경우 호출 key_eq()(X, Y)에서 true를 반환하며, 호출 hash_function()(keyval)은 형식 size_t의 값 분포를 생성합니다. 템플릿 클래스 unordered_multiset 클래스과 달리, 템플릿 클래스 unordered_set의 개체는 key_eq()(X, Y)가 제어된 시퀀스의 두 요소에 대해 항상 false라는 점에 대해 보장합니다. (키는 고유합니다.)
개체는 또한 최대 로드 비율(버킷당 최대 평균 요소 수를 원하는 대로 지정)를 저장합니다. 요소를 삽입할 때 unordered_set::load_factor()에서 최대 로드 비율이 초과될 경우 컨테이너는 버킷 수를 증가시키고 필요에 따라 해시 테이블을 다시 빌드합니다.
제어된 시퀀스의 실제 요소 순서는 해시 함수, 비교 함수, 삽입 순서, 최대 로드 비율, 현재 버킷 수에 따라 달라집니다. 제어된 시퀀스의 요소 순서는 일반적으로 예측할 수 없습니다. 하지만 동일하게 정렬된 요소의 하위 집합은 제어된 시퀀스에서 항상 인접해 있습니다.
개체는 unordered_set::allocator_type 형식의 저장된 할당자 개체를 통해 제어하는 시퀀스에 대한 저장소를 할당하고 해제합니다. 그러한 할당자 개체는 템플릿 클래스 allocator의 개체와 같은 외부 인터페이스가 있어야 합니다. 컨테이너 개체를 할당하는 경우 저장된 할당자 개체는 복사되지 않습니다.
요구 사항
헤더: <unordered_set>
네임스페이스: std