다음을 통해 공유


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

이 컨테이너의 최대 버킷 수입니다.

참고 항목

concurrency 네임스페이스
병렬 컨테이너 및 개체