다음을 통해 공유


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

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

참고 항목

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