concurrent_unordered_map 클래스
concurrent_unordered_map
클래스는 std::pair<const K, _Element_type>
형식의 다양한 길이 요소 시퀀스를 제어하는 동시성으로부터 안전한 컨테이너입니다. 시퀀스는 동시성으로부터 안전한 추가, 요소 액세스, 반복기 액세스 및 반복기 통과 작업을 사용할 수 있는 방식으로 표시됩니다. 여기서 동시성 안전은 포인터 또는 반복기가 항상 유효함을 의미합니다. 요소 초기화 또는 특정 순회 순서를 보장하지 않습니다.
구문
template <typename K,
typename _Element_type,
typename _Hasher = std::hash<K>,
typename key_equality = std::equal_to<K>,
typename _Allocator_type = std::allocator<std::pair<const K,
_Element_type>>
>,
typename key_equality = std::equal_to<K>,
typename _Allocator_type = std::allocator<std::pair<const K,
_Element_type>>> class concurrent_unordered_map : public details::_Concurrent_hash<details::_Concurrent_unordered_map_traits<K,
_Element_type,
details::_Hash_compare<K,
_Hasher,
key_equality>,
_Allocator_type,
false>>;
매개 변수
K
키 형식입니다.
_Element_type
매핑된 형식입니다.
_Hasher
해시 함수 개체 형식입니다. 이 인수는 선택 사항이며 기본값은 std::hash<K>
입니다.
key_equality
같음 비교 함수 개체 형식입니다. 이 인수는 선택 사항이며 기본값은 std::equal_to<K>
입니다.
_Allocator_type
동시 정렬되지 않은 맵에 대한 메모리 할당 및 할당 취소에 대한 세부 정보를 캡슐화하는 저장된 할당자 개체를 나타내는 형식입니다. 이 인수는 선택 사항이며 기본값은 std::allocator<std::pair<K
,_Element_type>>
입니다.
멤버
공용 Typedefs
속성 | 설명 |
---|---|
allocator_type |
스토리지 관리를 위한 할당자의 형식입니다. |
const_iterator |
제어되는 시퀀스에 대한 상수 반복기의 형식입니다. |
const_local_iterator |
제어되는 시퀀스에 대한 상수 버킷 반복기의 형식입니다. |
const_pointer |
요소에 대한 상수 포인터의 형식입니다. |
const_reference |
요소에 대한 상수 참조의 형식입니다. |
difference_type |
두 요소 사이의 부호가 있는 거리의 형식입니다. |
hasher |
해시 함수의 형식입니다. |
iterator |
제어되는 시퀀스에 대한 반복기의 형식입니다. |
key_equal |
비교 함수의 형식입니다. |
key_type |
정렬 키의 형식입니다. |
local_iterator |
제어되는 시퀀스에 대한 버킷 반복기의 형식입니다. |
mapped_type |
각 키와 연결된 매핑된 값의 형식입니다. |
pointer |
요소에 대한 포인터의 형식입니다. |
reference |
요소에 대한 참조의 형식입니다. |
size_type |
두 요소 사이의 부호가 없는 거리의 형식입니다. |
value_type |
요소의 형식입니다. |
공용 생성자
속성 | 설명 |
---|---|
concurrent_unordered_map | 오버로드됨. 순서가 지정되지 않은 동시 맵을 생성합니다. |
공용 메서드
이름 | 설명 |
---|---|
at | 오버로드됨. 지정된 키 값이 있는 concurrent_unordered_map 요소를 찾습니다. 이 메서드는 동시성 안전입니다. |
hash_function | 저장된 해시 함수 개체를 가져옵니다. |
insert | 오버로드됨. 개체에 concurrent_unordered_map 요소를 추가합니다. |
key_eq | 저장된 같음 비교 함수 개체를 가져옵니다. |
swap | 두 concurrent_unordered_map 개체의 내용을 바꿉니다. 이 메서드는 동시성이 안전하지 않습니다. |
unsafe_erase | 오버로드됨. 지정된 위치에서 요소를 concurrent_unordered_map 제거합니다. 이 메서드는 동시성이 안전하지 않습니다. |
Public 연산자
속성 | 설명 |
---|---|
operator[] | 오버로드됨. 지정된 키가 있는 요소를 찾거나 삽입합니다. 이 메서드는 동시성 안전입니다. |
operator= | 오버로드됨. 다른 concurrent_unordered_map 개체의 내용을 이 개체에 할당합니다. 이 메서드는 동시성이 안전하지 않습니다. |
설명
클래스에 대한 concurrent_unordered_map
자세한 내용은 병렬 컨테이너 및 개체를 참조 하세요.
상속 계층 구조
_Traits
_Concurrent_hash
concurrent_unordered_map
요구 사항
헤더: concurrent_unordered_map.h
네임스페이스: 동시성
시간
지정된 키 값이 있는 concurrent_unordered_map
요소를 찾습니다. 이 메서드는 동시성 안전입니다.
mapped_type& at(const key_type& KVal);
const mapped_type& at(const key_type& KVal) const;
매개 변수
KVal
찾을 키 값입니다.
Return Value
찾은 요소의 데이터 값에 대한 참조입니다.
설명
인수 키 값을 찾을 수 없는 경우 이 함수는 out_of_range
클래스의 개체를 throw합니다.
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_map
순서가 지정되지 않은 동시 맵을 생성합니다.
explicit concurrent_unordered_map(
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_map(
const allocator_type& _Allocator);
template <typename _Iterator>
concurrent_unordered_map(_Iterator _Begin,
_Iterator _End,
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_map(
const concurrent_unordered_map& _Umap);
concurrent_unordered_map(
const concurrent_unordered_map& _Umap,
const allocator_type& _Allocator);
concurrent_unordered_map(
concurrent_unordered_map&& _Umap);
매개 변수
_반복기
입력 반복기의 형식입니다.
_Number_of_buckets
순서가 지정되지 않은 이 맵에 대한 초기 버킷 수입니다.
_Hasher
순서가 지정되지 않은 이 맵에 대한 해시 함수입니다.
key_equality
순서가 지정되지 않은 이 맵에 대한 같음 비교 함수입니다.
_할당자
순서가 지정되지 않은 이 맵에 대한 할당자입니다.
_시작되다
복사할 요소의 범위에서 첫 번째 요소의 위치입니다.
_끝
복사할 요소의 범위를 벗어나는 첫 번째 요소의 위치입니다.
_Umap
요소를 복사해 오거나 이동해 올 소스 concurrent_unordered_map
개체입니다.
설명
모든 생성자는 할당자 개체 _Allocator
를 저장하고 순서가 지정되지 않은 맵을 초기화합니다.
첫 번째 생성자는 비어 있는 초기 맵을 지정하고 사용할 버킷 수, 해시 함수, 같음 함수 및 할당자 형식을 명시적으로 지정합니다.
두 번째 생성자는 순서가 지정되지 않은 맵에 대한 할당자를 지정합니다.
세 번째 생성자는 반복기 범위 [ _Begin
, _End
)에서 제공하는 값을 지정합니다.
네 번째 및 다섯 번째 생성자는 순서가 지정되지 않은 동시 맵 _Umap
의 복사본을 지정합니다.
마지막 생성자는 순서가 지정되지 않은 동시 맵 _Umap
의 이동을 지정합니다.
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_map
요소를 추가합니다.
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[]
지정된 키가 있는 요소를 찾거나 삽입합니다. 이 메서드는 동시성 안전입니다.
mapped_type& operator[](const key_type& kval);
mapped_type& operator[](key_type&& kval);
매개 변수
KVal
다음 키 값
찾거나 삽입합니다.
Return Value
찾거나 삽입한 요소의 데이터 값에 대한 참조입니다.
설명
인수 키 값이 없으면 데이터 형식의 기본값과 함께 삽입됩니다.
operator[]
를 사용하여 맵 m
m[key] = DataValue;
에 요소를 삽입하는 데 사용할 수 있습니다. 여기서 DataValue
키 값이 있는 요소의 값 mapped_type
key
은 다음과 입니다.
operator[]
를 사용하여 요소를 삽입하는 경우 반환된 참조는 삽입이 기존 요소를 변경하는지 또는 새 요소를 생성하는지 여부를 나타내지 않습니다. 멤버 함수 및 삽입을 find
사용하여 지정된 키를 가진 요소가 삽입 전에 이미 있는지 여부를 확인할 수 있습니다.
operator=
다른 concurrent_unordered_map
개체의 내용을 이 개체에 할당합니다. 이 메서드는 동시성이 안전하지 않습니다.
concurrent_unordered_map& operator= (const concurrent_unordered_map& _Umap);
concurrent_unordered_map& operator= (concurrent_unordered_map&& _Umap);
매개 변수
_Umap
원본 concurrent_unordered_map
개체입니다.
Return Value
이 concurrent_unordered_map
개체에 대한 참조입니다.
설명
동시 벡터의 기존 요소를 지운 후에 operator=
는 _Umap
의 내용을 동시 벡터로 복사하거나 이동합니다.
재 탕
해시 테이블을 다시 빌드합니다.
void rehash(size_type _Buckets);
매개 변수
_양동이
원하는 버킷 수입니다.
설명
멤버 함수는 필요에 따라 버킷 수를 _Buckets
이상으로 변경하고 해시 테이블을 다시 빌드합니다. 버킷 수는 2의 힘이어야 합니다. 2의 힘이 아니라면 다음으로 큰 2의 전력으로 반올림됩니다.
버킷 수가 잘못된 경우(최대 버킷 수보다 0개 이상) out_of_range 예외가 throw됩니다.
크기
이 동시 컨테이너의 요소 수를 반환합니다. 이 메서드는 동시성 안전 합니다.
size_type size() const;
Return Value
컨테이너에 들어 있는 항목 수입니다.
설명
동시 삽입이 있을 경우 이 함수를 호출한 직후, 반환 값을 읽기도 전에 동시 컨테이너의 요소 수가 변경될 수 있습니다.
swap
두 concurrent_unordered_map
개체의 내용을 바꿉니다. 이 메서드는 동시성이 안전하지 않습니다.
void swap(concurrent_unordered_map& _Umap);
매개 변수
_Umap
스왑할 concurrent_unordered_map
개체입니다.
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_map
제거합니다. 이 메서드는 동시성이 안전하지 않습니다.
iterator unsafe_erase(
const_iterator _Where);
iterator unsafe_erase(
const_iterator _Begin,
const_iterator _End);
size_type unsafe_erase(
const key_type& KVal);
매개 변수
_Where
지울 반복기 위치입니다.
_시작되다
삭제할 요소의 범위에서 첫 번째 요소의 위치입니다.
_끝
삭제할 요소의 범위를 벗어나는 첫 번째 요소의 위치입니다.
KVal
지울 키 값입니다.
Return Value
처음 두 멤버 함수는 제거된 요소 이상으로 남아 있는 첫 번째 요소를 지정하는 반복기를 반환하거나 concurrent_unordered_map::end
( 해당 요소가 없는 경우) 반환합니다. 세 번째 멤버 함수는 제거되는 요소의 수를 반환합니다.
설명
첫 번째 멤버 함수는 _Where
로 지정된 제어 시퀀스의 요소를 제거합니다. 두 번째 멤버 함수는 범위 [ _Begin
, _End
)의 요소를 제거합니다.
세 번째 멤버 함수는 (KVal)로 구분된 concurrent_unordered_map::equal_range
범위의 요소를 제거합니다.
unsafe_max_bucket_count
이 컨테이너의 최대 버킷 수를 반환합니다.
size_type unsafe_max_bucket_count() const;
Return Value
이 컨테이너의 최대 버킷 수입니다.