concurrent_unordered_set 클래스
클래스는 concurrent_unordered_set
K 형식 요소의 다양한 길이 시퀀스를 제어하는 동시성 안전 컨테이너입니다. 시퀀스는 동시성 안전 추가, 요소 액세스, 반복기 액세스 및 반복기 순회 작업을 가능하게 하는 방식으로 표시됩니다. 여기서 동시성 안전은 포인터 또는 반복기가 항상 유효함을 의미합니다. 요소 초기화 또는 특정 순회 순서를 보장하지 않습니다.
구문
template <typename K,
typename _Hasher = std::hash<K>,
typename key_equality = std::equal_to<K>,
typename _Allocator_type = std::allocator<K>
>,
typename key_equality = std::equal_to<K>,
typename _Allocator_type = std::allocator<K>> class concurrent_unordered_set : public details::_Concurrent_hash<details::_Concurrent_unordered_set_traits<K,
details::_Hash_compare<K,
_Hasher,
key_equality>,
_Allocator_type,
false>>;
매개 변수
K
키 형식입니다.
_Hasher
해시 함수 개체 형식입니다. 이 인수는 선택 사항이며 기본값은 std::hash<K>
입니다.
key_equality
같음 비교 함수 개체 형식입니다. 이 인수는 선택 사항이며 기본값은 std::equal_to<K>
입니다.
_Allocator_type
동시 정렬되지 않은 집합에 대한 메모리 할당 및 할당 취소에 대한 세부 정보를 캡슐화하는 저장된 할당자 개체를 나타내는 형식입니다. 이 인수는 선택 사항이며 기본값은 std::allocator<K>
입니다.
멤버
공용 Typedefs
속성 | 설명 |
---|---|
allocator_type |
스토리지 관리를 위한 할당자의 형식입니다. |
const_iterator |
제어되는 시퀀스에 대한 상수 반복기의 형식입니다. |
const_local_iterator |
제어되는 시퀀스에 대한 상수 버킷 반복기의 형식입니다. |
const_pointer |
요소에 대한 상수 포인터의 형식입니다. |
const_reference |
요소에 대한 상수 참조의 형식입니다. |
difference_type |
두 요소 사이의 부호가 있는 거리의 형식입니다. |
hasher |
해시 함수의 형식입니다. |
iterator |
제어되는 시퀀스에 대한 반복기의 형식입니다. |
key_equal |
비교 함수의 형식입니다. |
key_type |
정렬 키의 형식입니다. |
local_iterator |
제어되는 시퀀스에 대한 버킷 반복기의 형식입니다. |
pointer |
요소에 대한 포인터의 형식입니다. |
reference |
요소에 대한 참조의 형식입니다. |
size_type |
두 요소 사이의 부호가 없는 거리의 형식입니다. |
value_type |
요소의 형식입니다. |
공용 생성자
속성 | 설명 |
---|---|
concurrent_unordered_set | 오버로드됨. 순서가 지정되지 않은 동시 집합을 생성합니다. |
공용 메서드
이름 | 설명 |
---|---|
hash_function | 저장된 해시 함수 개체를 반환합니다. |
insert | 오버로드됨. 개체에 concurrent_unordered_set 요소를 추가합니다. |
key_eq | 저장된 같음 비교 함수 개체를 반환합니다. |
swap | 두 concurrent_unordered_set 개체의 내용을 바꿉니다. 이 메서드는 동시성이 안전하지 않습니다. |
unsafe_erase | 오버로드됨. 지정된 위치에서 요소를 concurrent_unordered_set 제거합니다. 이 메서드는 동시성이 안전하지 않습니다. |
Public 연산자
속성 | 설명 |
---|---|
operator= | 오버로드됨. 다른 concurrent_unordered_set 개체의 내용을 이 개체에 할당합니다. 이 메서드는 동시성이 안전하지 않습니다. |
설명
클래스에 대한 concurrent_unordered_set
자세한 내용은 병렬 컨테이너 및 개체를 참조 하세요.
상속 계층 구조
_Traits
_Concurrent_hash
concurrent_unordered_set
요구 사항
헤더: concurrent_unordered_set.h
네임스페이스: 동시성
begin
동시 컨테이너의 첫 번째 요소를 가리키는 반복기를 반환합니다. 이 메서드는 동시성 안전 합니다.
iterator begin();
const_iterator begin() const;
Return Value
동시 컨테이너의 첫 번째 요소에 대한 반복기입니다.
cbegin
동시 컨테이너의 첫 번째 요소를 가리키는 const 반복기를 반환합니다. 이 메서드는 동시성 안전 합니다.
const_iterator cbegin() const;
Return Value
동시 컨테이너의 첫 번째 요소에 대한 const 반복기입니다.
cend
동시 컨테이너의 마지막 요소 다음에 나오는 위치를 가리키는 const 반복기를 반환합니다. 이 메서드는 동시성 안전 합니다.
const_iterator cend() const;
Return Value
동시 컨테이너의 마지막 요소 다음에 나오는 위치에 대한 const 반복기입니다.
clear
동시 컨테이너의 모든 요소를 지웁니다. 이 함수는 동시성이 안전하지 않습니다.
void clear();
concurrent_unordered_set
순서가 지정되지 않은 동시 집합을 생성합니다.
explicit concurrent_unordered_set(
size_type _Number_of_buckets = 8,
const hasher& _Hasher = hasher(),
const key_equal& key_equality = key_equal(),
const allocator_type& _Allocator = allocator_type());
concurrent_unordered_set(
const allocator_type& _Allocator);
template <typename _Iterator>
concurrent_unordered_set(_Iterator first,
_Iterator last,
size_type _Number_of_buckets = 8,
const hasher& _Hasher = hasher(),
const key_equal& key_equality = key_equal(),
const allocator_type& _Allocator = allocator_type());
concurrent_unordered_set(
const concurrent_unordered_set& _Uset);
concurrent_unordered_set(
const concurrent_unordered_set& _Uset,
const allocator_type& _Allocator);
concurrent_unordered_set(
concurrent_unordered_set&& _Uset);
매개 변수
_반복기
입력 반복기의 형식입니다.
_Number_of_buckets
순서가 지정되지 않은 이 집합에 대한 초기 버킷 수입니다.
_Hasher
순서가 지정되지 않은 이 집합에 대한 해시 함수입니다.
key_equality
순서가 지정되지 않은 이 집합에 대한 같음 비교 함수입니다.
_할당자
순서가 지정되지 않은 이 집합에 대한 할당자입니다.
first
last
_Uset
요소를 복사해 오거나 이동해 올 소스 concurrent_unordered_set
개체입니다.
설명
모든 생성자는 할당자 개체 _Allocator
를 저장하고 순서가 지정되지 않은 집합을 초기화합니다.
첫 번째 생성자는 비어 있는 초기 집합을 지정하고 사용할 버킷 수, 해시 함수, 같음 함수 및 할당자 형식을 명시적으로 지정합니다.
두 번째 생성자는 순서가 지정되지 않은 집합에 대한 할당자를 지정합니다.
세 번째 생성자는 반복기 범위 [ _Begin
, _End
)에서 제공하는 값을 지정합니다.
네 번째 및 다섯 번째 생성자는 순서가 지정되지 않은 동시 집합 _Uset
의 복사본을 지정합니다.
마지막 생성자는 순서가 지정되지 않은 동시 집합 _Uset
의 이동을 지정합니다.
count
지정된 키와 일치하는 요소 수를 계산합니다. 이 함수는 동시성 안전합니다.
size_type count(const key_type& KVal) const;
매개 변수
KVal
검색할 키입니다.
Return Value
키가 컨테이너에 표시되는 횟수입니다.
empty
요소가 있는지 여부를 테스트합니다. 이 메서드는 동시성 안전 합니다.
bool empty() const;
Return Value
true
동시 컨테이너가 비어 false
있으면 그렇지 않습니다.
설명
동시 삽입이 있는 경우 동시 컨테이너가 비어 있는지 여부는 반환 값이 읽기 전에 이 함수를 호출한 직후에 변경될 수 있습니다.
end
동시 컨테이너의 마지막 요소 다음에 나오는 위치를 가리키는 반복기를 반환합니다. 이 메서드는 동시성 안전 합니다.
iterator end();
const_iterator end() const;
Return Value
동시 컨테이너의 마지막 요소 다음에 나오는 위치에 대한 반복기입니다.
equal_range
지정된 키와 일치하는 범위를 찾습니다. 이 함수는 동시성 안전합니다.
std::pair<iterator,
iterator> equal_range(
const key_type& KVal);
std::pair<const_iterator,
const_iterator> equal_range(
const key_type& KVal) const;
매개 변수
KVal
검색할 키 값입니다.
Return Value
첫 번째 요소가 시작 부분의 반복기이고 두 번째 요소가 범위 끝의 반복기인 쌍입니다.
설명
동시 삽입으로 인해 시작 반복기 뒤와 끝 반복기 전에 추가 키가 삽입될 수 있습니다.
find
지정된 키와 일치하는 요소를 찾습니다. 이 함수는 동시성 안전합니다.
iterator find(const key_type& KVal);
const_iterator find(const key_type& KVal) const;
매개 변수
KVal
검색할 키 값입니다.
Return Value
제공된 키와 일치하는 첫 번째 요소의 위치를 가리키는 반복기 또는 해당 요소가 없는 경우 반복기 end()
입니다.
get_allocator
이 동시 컨테이너에 대해 저장된 할당자 개체를 반환합니다. 이 메서드는 동시성 안전 합니다.
allocator_type get_allocator() const;
Return Value
이 동시 컨테이너에 대해 저장된 할당자 개체입니다.
hash_function
저장된 해시 함수 개체를 반환합니다.
hasher hash_function() const;
Return Value
저장된 해시 함수 개체입니다.
삽입
개체에 concurrent_unordered_set
요소를 추가합니다.
std::pair<iterator,
bool> insert(
const value_type& value);
iterator insert(
const_iterator _Where,
const value_type& value);
template<class _Iterator>
void insert(_Iterator first,
_Iterator last);
template<class V>
std::pair<iterator,
bool> insert(
V&& value);
template<class V>
typename std::enable_if<!std::is_same<const_iterator,
typename std::remove_reference<V>::type>::value,
iterator>::type insert(
const_iterator _Where,
V&& value);
매개 변수
_반복기
삽입에 사용되는 반복기 형식입니다.
V
집합에 삽입된 값의 형식입니다.
value
삽입할 값입니다.
_Where
삽입 지점을 검색할 시작 위치입니다.
first
삽입할 범위의 시작 부분입니다.
last
삽입할 범위의 끝입니다.
Return Value
반복기와 부울 값을 포함하는 쌍입니다. 자세한 내용은 설명 섹션을 참조하세요.
설명
첫 번째 멤버 함수는 키에 해당하는 순서가 있는 X 요소가 시퀀스에 있는지 여부를 결정합니다 value
. 그렇지 않은 경우 이러한 요소 X를 만들고 .을 사용하여 value
초기화합니다. 그런 다음 함수는 X를 지정하는 반복기를 where
결정합니다. 삽입이 발생하면 함수는 .를 반환합니다 std::pair(where, true)
. 그 외의 경우 std::pair(where, false)
를 반환합니다.
두 번째 멤버 함수는 삽입 지점을 검색하기 위해 제어되는 시퀀스 내에서 시작 위치로 사용하여 _Where
insert(value
)를 반환합니다.
세 번째 멤버 함수는 [ first
, last
) 범위의 요소 값 시퀀스를 삽입합니다.
마지막 두 멤버 함수는 처음 두 함수와 똑같이 동작하지만, value
는 삽입된 값을 생성하는데 사용된다는 점이 다릅니다.
key_eq
저장된 같음 비교 함수 개체를 반환합니다.
key_equal key_eq() const;
Return Value
저장된 같음 비교 함수 개체입니다.
load_factor
컨테이너의 현재 로드 요소를 계산하고 반환합니다. 부하 요소는 컨테이너의 요소 수를 버킷 수로 나눈 값입니다.
float load_factor() const;
Return Value
컨테이너의 로드 요소입니다.
max_load_factor
컨테이너의 최대 로드 요소를 가져오거나 설정합니다. 최대 로드 비율은 컨테이너가 내부 테이블을 확장하기 전에 버킷에 있을 수 있는 것보다 많은 요소 수입니다.
float max_load_factor() const;
void max_load_factor(float _Newmax);
매개 변수
_Newmax
Return Value
첫 번째 멤버 함수는 저장된 최대 로드 비율을 반환합니다. 두 번째 멤버 함수는 값을 반환하지 않지만 제공된 로드 팩터가 잘못된 경우 out_of_range 예외를 throw합니다.
max_size
할당자에 의해 결정되는 동시 컨테이너의 최대 크기를 반환합니다. 이 메서드는 동시성 안전 합니다.
size_type max_size() const;
Return Value
이 동시 컨테이너에 삽입할 수 있는 최대 요소 수입니다.
설명
이 상한 값은 실제로 컨테이너가 보유할 수 있는 값보다 높을 수 있습니다.
operator=
다른 concurrent_unordered_set
개체의 내용을 이 개체에 할당합니다. 이 메서드는 동시성이 안전하지 않습니다.
concurrent_unordered_set& operator= (const concurrent_unordered_set& _Uset);
concurrent_unordered_set& operator= (concurrent_unordered_set&& _Uset);
매개 변수
_Uset
원본 concurrent_unordered_set
개체입니다.
Return Value
이 concurrent_unordered_set
개체에 대한 참조입니다.
설명
operator=
는 순서가 지정되지 않은 동시 집합에서 기존 요소를 지운 다음 이 집합으로 _Uset
의 내용을 이동하거나 복사합니다.
재 탕
해시 테이블을 다시 빌드합니다.
void rehash(size_type _Buckets);
매개 변수
_양동이
원하는 버킷 수입니다.
설명
멤버 함수는 필요에 따라 버킷 수를 _Buckets
이상으로 변경하고 해시 테이블을 다시 빌드합니다. 버킷 수는 2의 힘이어야 합니다. 2의 힘이 아니라면 다음으로 큰 2의 전력으로 반올림됩니다.
버킷 수가 잘못된 경우(최대 버킷 수보다 0개 이상) out_of_range 예외가 throw됩니다.
크기
이 동시 컨테이너의 요소 수를 반환합니다. 이 메서드는 동시성 안전 합니다.
size_type size() const;
Return Value
컨테이너에 들어 있는 항목 수입니다.
설명
동시 삽입이 있을 경우 이 함수를 호출한 직후, 반환 값을 읽기도 전에 동시 컨테이너의 요소 수가 변경될 수 있습니다.
swap
두 concurrent_unordered_set
개체의 내용을 바꿉니다. 이 메서드는 동시성이 안전하지 않습니다.
void swap(concurrent_unordered_set& _Uset);
매개 변수
_Uset
스왑할 concurrent_unordered_set
개체입니다.
unsafe_begin
특정 버킷에 대해 이 컨테이너의 첫 번째 요소에 반복기를 반환합니다.
local_iterator unsafe_begin(size_type _Bucket);
const_local_iterator unsafe_begin(size_type _Bucket) const;
매개 변수
_통
버킷 인덱스입니다.
Return Value
버킷의 시작을 가리키는 반복기입니다.
unsafe_bucket
특정 키가 이 컨테이너에 매핑되는 버킷 인덱스 반환
size_type unsafe_bucket(const key_type& KVal) const;
매개 변수
KVal
검색할 요소 키입니다.
Return Value
이 컨테이너의 키에 대한 버킷 인덱스입니다.
unsafe_bucket_count
이 컨테이너의 현재 버킷 수를 반환합니다.
size_type unsafe_bucket_count() const;
Return Value
이 컨테이너의 현재 버킷 수입니다.
unsafe_bucket_size
이 컨테이너의 특정 버킷에 있는 항목 수를 반환합니다.
size_type unsafe_bucket_size(size_type _Bucket);
매개 변수
_통
검색할 버킷입니다.
Return Value
이 컨테이너의 현재 버킷 수입니다.
unsafe_cbegin
특정 버킷에 대해 이 컨테이너의 첫 번째 요소에 반복기를 반환합니다.
const_local_iterator unsafe_cbegin(size_type _Bucket) const;
매개 변수
_통
버킷 인덱스입니다.
Return Value
버킷의 시작을 가리키는 반복기입니다.
unsafe_cend
특정 버킷의 마지막 요소 다음에 나오는 위치에 반복기를 반환합니다.
const_local_iterator unsafe_cend(size_type _Bucket) const;
매개 변수
_통
버킷 인덱스입니다.
Return Value
버킷의 시작을 가리키는 반복기입니다.
unsafe_end
특정 버킷에 대해 이 컨테이너의 마지막 요소에 반복기를 반환합니다.
local_iterator unsafe_end(size_type _Bucket);
const_local_iterator unsafe_end(size_type _Bucket) const;
매개 변수
_통
버킷 인덱스입니다.
Return Value
버킷의 끝을 가리키는 반복기입니다.
unsafe_erase
지정된 위치에서 요소를 concurrent_unordered_set
제거합니다. 이 메서드는 동시성이 안전하지 않습니다.
iterator unsafe_erase(
const_iterator _Where);
size_type unsafe_erase(
const key_type& KVal);
iterator unsafe_erase(
const_iterator first,
const_iterator last);
매개 변수
_Where
지울 반복기 위치입니다.
KVal
지울 키 값입니다.
first
last
반복기.
Return Value
처음 두 멤버 함수는 제거된 요소 이상으로 남아 있는 첫 번째 요소를 지정하는 반복기를 반환하고 , 해당 요소가 없으면 end()를 반환합니다. 세 번째 멤버 함수는 제거되는 요소의 수를 반환합니다.
설명
첫 번째 멤버 함수는 가리키는 요소를 _Where
제거합니다. 두 번째 멤버 함수는 범위 [ _Begin
, _End
)의 요소를 제거합니다.
세 번째 멤버 함수는 equal_range(KVal)로 구분된 범위의 요소를 제거합니다.
unsafe_max_bucket_count
이 컨테이너의 최대 버킷 수를 반환합니다.
size_type unsafe_max_bucket_count() const;
Return Value
이 컨테이너의 최대 버킷 수입니다.