concurrent_unordered_set — Klasa
Klasa concurrent_unordered_set
jest kontenerem bezpiecznym ze współbieżnością, który kontroluje różną długość sekwencji elementów typu K. Sekwencja jest reprezentowana w sposób umożliwiający bezpieczne dołączanie współbieżności, dostęp do elementów, dostęp iteratora i operacje przechodzenia iteratora. W tym miejscu wskaźniki lub iteratory są zawsze prawidłowe. Nie jest to gwarancja inicjowania elementów ani określonej kolejności przechodzenia.
Składnia
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>>;
Parametry
K
Typ klucza.
_Hasher
Typ obiektu funkcji mieszania. Ten argument jest opcjonalny, a wartość domyślna to std::hash<K>
.
key_equality
Typ obiektu funkcji porównywania równości. Ten argument jest opcjonalny, a wartość domyślna to std::equal_to<K>
.
_Allocator_type
Typ reprezentujący przechowywany obiekt alokatora, który hermetyzuje szczegóły dotyczące alokacji i cofania przydziału pamięci dla współbieżnego zestawu nieuporządkowanego. Ten argument jest opcjonalny, a wartość domyślna to std::allocator<K>
.
Elementy członkowskie
Definicje typów publicznych
Nazwa/nazwisko | opis |
---|---|
allocator_type |
Typ alokatora do zarządzania pamięcią. |
const_iterator |
Typ iteratora stałego dla kontrolowanej sekwencji. |
const_local_iterator |
Typ iteratora stałego przedziału dla kontrolowanej sekwencji. |
const_pointer |
Typ stałego wskaźnika do elementu. |
const_reference |
Typ stałego odwołania do elementu. |
difference_type |
Typ odległości ze znakiem między dwoma elementami. |
hasher |
Typ funkcji mieszania. |
iterator |
Typ iteratora dla kontrolowanej sekwencji. |
key_equal |
Typ funkcji porównywania. |
key_type |
Typ klucza sortowania. |
local_iterator |
Typ iteratora przedziału dla kontrolowanej sekwencji. |
pointer |
Typ wskaźnika do elementu. |
reference |
Typ odwołania do elementu. |
size_type |
Typ odległości bez znaku między dwoma elementami. |
value_type |
Typ elementu. |
Konstruktory publiczne
Nazwa/nazwisko | opis |
---|---|
concurrent_unordered_set | Przeciążone. Tworzy współbieżny zestaw nieurządkowany. |
Metody publiczne
Nazwa/nazwisko | opis |
---|---|
hash_function | Zwraca przechowywany obiekt funkcji skrótu. |
wstawiać | Przeciążone. Dodaje elementy do concurrent_unordered_set obiektu. |
key_eq | Zwraca przechowywany obiekt funkcji porównywania równości. |
zamiana | Zamienia zawartość dwóch concurrent_unordered_set obiektów. Ta metoda nie jest bezpieczna współbieżności. |
unsafe_erase | Przeciążone. Usuwa elementy z concurrent_unordered_set określonych pozycji. Ta metoda nie jest bezpieczna współbieżności. |
Operatory publiczne
Nazwa/nazwisko | opis |
---|---|
operator = | Przeciążone. Przypisuje zawartość innego concurrent_unordered_set obiektu do tego obiektu. Ta metoda nie jest bezpieczna współbieżności. |
Uwagi
Aby uzyskać szczegółowe informacje na concurrent_unordered_set
temat klasy, zobacz Parallel Containers and Objects (Kontenery równoległe i obiekty).
Hierarchia dziedziczenia
_Traits
_Concurrent_hash
concurrent_unordered_set
Wymagania
Nagłówek: concurrent_unordered_set.h
Przestrzeń nazw: współbieżność
zaczynać
Zwraca iterator wskazujący pierwszy element w kontenerze współbieżnym. Ta metoda jest bezpieczna współbieżności.
iterator begin();
const_iterator begin() const;
Wartość zwracana
Iterator pierwszego elementu w kontenerze współbieżnym.
cbegin
Zwraca iterator const wskazujący pierwszy element w kontenerze współbieżnym. Ta metoda jest bezpieczna współbieżności.
const_iterator cbegin() const;
Wartość zwracana
Iterator const do pierwszego elementu w kontenerze współbieżnym.
cend
Zwraca iterator const wskazujący lokalizację, która zakończyła się powodzeniem ostatniego elementu w kontenerze współbieżnym. Ta metoda jest bezpieczna współbieżności.
const_iterator cend() const;
Wartość zwracana
Iterator const do lokalizacji zakończył się powodzeniem ostatniego elementu w kontenerze współbieżnym.
jasny
Usuwa wszystkie elementy w kontenerze współbieżnych. Ta funkcja nie jest bezpieczna współbieżności.
void clear();
concurrent_unordered_set
Tworzy współbieżny zestaw nieurządkowany.
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);
Parametry
_Sterująca
Typ iteratora wejściowego.
_Number_of_buckets
Początkowa liczba zasobników dla tego nieurządkowanego zestawu.
_Hasher
Funkcja skrótu dla tego nieurządkowanego zestawu.
key_equality
Funkcja porównania równości dla tego nieurządkowanego zestawu.
_Programu przydzielania
Alokator dla tego nieurządkowanego zestawu.
pierwszy
ostatni
_Uset
Obiekt źródłowy concurrent_unordered_set
do kopiowania lub przenoszenia elementów.
Uwagi
Wszystkie konstruktory przechowują obiekt _Allocator
alokatora i inicjują nieurządkowany zestaw.
Pierwszy konstruktor określa pusty zestaw początkowy i jawnie określa liczbę zasobników, funkcji skrótu, funkcji równości i typu alokatora do użycia.
Drugi konstruktor określa alokator dla nieurządkowanego zestawu.
Trzeci konstruktor określa wartości dostarczone przez zakres iteratora [ _Begin
, _End
).
Czwarte i piąte konstruktory określają kopię współbieżnego zestawu _Uset
nieurządkowanego .
Ostatni konstruktor określa ruch współbieżnego zestawu _Uset
nieurządkowanego .
count
Zlicza elementy pasujące do określonego klucza. Ta funkcja jest bezpieczna współbieżności.
size_type count(const key_type& KVal) const;
Parametry
KVal
Klucz do wyszukania.
Wartość zwracana
Liczba razy, ile razy klucz pojawia się w kontenerze.
empty
Sprawdza, czy nie ma żadnych elementów. Ta metoda jest bezpieczna współbieżności.
bool empty() const;
Wartość zwracana
true
jeśli kontener współbieżny jest pusty, false
w przeciwnym razie.
Uwagi
W obecności współbieżnych wstawień, czy współbieżny kontener jest pusty, może ulec zmianie natychmiast po wywołaniu tej funkcji, zanim wartość zwracana jest nawet odczytywana.
end
Zwraca iterator wskazujący lokalizację, która zakończyła się powodzeniem ostatniego elementu w kontenerze współbieżnym. Ta metoda jest bezpieczna współbieżności.
iterator end();
const_iterator end() const;
Wartość zwracana
Iterator do lokalizacji zakończył się powodzeniem ostatniego elementu w kontenerze współbieżnym.
equal_range
Znajduje zakres pasujący do określonego klucza. Ta funkcja jest bezpieczna współbieżności.
std::pair<iterator,
iterator> equal_range(
const key_type& KVal);
std::pair<const_iterator,
const_iterator> equal_range(
const key_type& KVal) const;
Parametry
KVal
Wartość klucza do wyszukania.
Wartość zwracana
Para, w której pierwszy element jest iteratorem na początku, a drugi element jest iteratorem na końcu zakresu.
Uwagi
Współbieżne operacje wstawiania mogą spowodować wstawienie dodatkowych kluczy po iteratorze rozpoczęcia i przed iteratorem końcowym.
find
Wyszukuje element, który odpowiada określonemu kluczowi. Ta funkcja jest bezpieczna współbieżności.
iterator find(const key_type& KVal);
const_iterator find(const key_type& KVal) const;
Parametry
KVal
Wartość klucza do wyszukania.
Wartość zwracana
Iterator wskazujący lokalizację pierwszego elementu, który był zgodny z podanym kluczem, lub iterator end()
, jeśli taki element nie istnieje.
get_allocator
Zwraca przechowywany obiekt alokatora dla tego współbieżnego kontenera. Ta metoda jest bezpieczna współbieżności.
allocator_type get_allocator() const;
Wartość zwracana
Przechowywany obiekt alokatora dla tego kontenera współbieżnego.
hash_function
Zwraca przechowywany obiekt funkcji skrótu.
hasher hash_function() const;
Wartość zwracana
Przechowywany obiekt funkcji skrótu.
insert
Dodaje elementy do concurrent_unordered_set
obiektu.
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);
Parametry
_Sterująca
Typ iteratora używany do wstawiania.
V
Typ wartości wstawionej do zestawu.
wartość
Wartość do wstawienia.
_Gdzie
Lokalizacja początkowa do wyszukania punktu wstawiania.
pierwszy
Początek zakresu do wstawienia.
ostatni
Koniec zakresu do wstawienia.
Wartość zwracana
Para zawierająca iterator i wartość logiczną. Aby uzyskać więcej informacji, zobacz sekcję Uwagi.
Uwagi
Pierwsza funkcja składowa określa, czy element X istnieje w sekwencji, której klucz ma równoważną kolejność względem elementu value
. Jeśli nie, tworzy taki element X i inicjuje go za pomocą value
polecenia . Następnie funkcja określa iterator where
, który wyznacza X. Jeśli wystąpiła wstawienie, funkcja zwraca std::pair(where, true)
wartość . W przeciwnym razie zwraca wartość std::pair(where, false)
.
Druga funkcja składowa zwraca metodę insert( value
), używając _Where
jako miejsca początkowego w kontrolowanej sekwencji w celu wyszukania punktu wstawiania.
Trzecia funkcja składowa wstawia sekwencję wartości elementów z zakresu [ first
, last
).
Ostatnie dwie funkcje składowe zachowują się tak samo jak pierwsze dwa, z tą różnicą, że value
są używane do konstruowania wstawionej wartości.
key_eq
Zwraca przechowywany obiekt funkcji porównywania równości.
key_equal key_eq() const;
Wartość zwracana
Przechowywany obiekt funkcji porównywania równości.
load_factor
Oblicza i zwraca bieżący współczynnik obciążenia kontenera. Współczynnik obciążenia to liczba elementów w kontenerze podzielonych przez liczbę zasobników.
float load_factor() const;
Wartość zwracana
Współczynnik obciążenia kontenera.
max_load_factor
Pobiera lub ustawia maksymalny współczynnik obciążenia kontenera. Maksymalny współczynnik obciążenia jest największą liczbą elementów niż może znajdować się w dowolnym zasobniku, zanim kontener powiększy tabelę wewnętrzną.
float max_load_factor() const;
void max_load_factor(float _Newmax);
Parametry
_Newmax
Wartość zwracana
Pierwsza funkcja składowa zwraca przechowywany maksymalny współczynnik obciążenia. Druga funkcja składowa nie zwraca wartości, ale zgłasza wyjątek out_of_range , jeśli podany współczynnik obciążenia jest nieprawidłowy.
max_size
Zwraca maksymalny rozmiar współbieżnego kontenera określonego przez alokator. Ta metoda jest bezpieczna współbieżności.
size_type max_size() const;
Wartość zwracana
Maksymalna liczba elementów, które można wstawić do tego współbieżnego kontenera.
Uwagi
Ta górna wartość granicy może być faktycznie wyższa niż to, co kontener może faktycznie przechowywać.
operator =
Przypisuje zawartość innego concurrent_unordered_set
obiektu do tego obiektu. Ta metoda nie jest bezpieczna współbieżności.
concurrent_unordered_set& operator= (const concurrent_unordered_set& _Uset);
concurrent_unordered_set& operator= (concurrent_unordered_set&& _Uset);
Parametry
_Uset
Obiekt źródłowy concurrent_unordered_set
.
Wartość zwracana
Odwołanie do tego concurrent_unordered_set
obiektu.
Uwagi
Po wymazaniu wszystkich istniejących elementów w zestawie nieurządkowanym operator=
współbieżności kopiuje lub przenosi zawartość _Uset
do współbieżnego zestawu nieurządkowanego.
rehash
Przebudowuje tabelę mieszania.
void rehash(size_type _Buckets);
Parametry
_Wiadra
Żądana liczba zasobników.
Uwagi
Funkcja składowa zmienia liczbę zasobników na co najmniej i _Buckets
ponownie kompiluje tabelę skrótów zgodnie z potrzebami. Liczba zasobników musi być mocą 2. Jeśli nie moc 2, zostanie zaokrąglona do następnej największej mocy 2.
Zgłasza out_of_range wyjątek, jeśli liczba zasobników jest nieprawidłowa (0 lub większa niż maksymalna liczba zasobników).
size
Zwraca liczbę elementów w tym kontenerze współbieżnych. Ta metoda jest bezpieczna współbieżności.
size_type size() const;
Wartość zwracana
Liczba elementów w kontenerze.
Uwagi
W obecności współbieżnych wstawiania liczba elementów w kontenerze współbieżnych może ulec zmianie natychmiast po wywołaniu tej funkcji, zanim wartość zwracana jest nawet odczytywana.
swap
Zamienia zawartość dwóch concurrent_unordered_set
obiektów. Ta metoda nie jest bezpieczna współbieżności.
void swap(concurrent_unordered_set& _Uset);
Parametry
_Uset
Obiekt concurrent_unordered_set
do zamiany.
unsafe_begin
Zwraca iterator do pierwszego elementu w tym kontenerze dla określonego zasobnika.
local_iterator unsafe_begin(size_type _Bucket);
const_local_iterator unsafe_begin(size_type _Bucket) const;
Parametry
_Wiadro
Indeks zasobnika.
Wartość zwracana
Iterator wskazujący początek zasobnika.
unsafe_bucket
Zwraca indeks zasobnika, do którego mapuje określony klucz w tym kontenerze.
size_type unsafe_bucket(const key_type& KVal) const;
Parametry
KVal
Wyszukiwany klucz elementu.
Wartość zwracana
Indeks zasobnika klucza w tym kontenerze.
unsafe_bucket_count
Zwraca bieżącą liczbę zasobników w tym kontenerze.
size_type unsafe_bucket_count() const;
Wartość zwracana
Bieżąca liczba zasobników w tym kontenerze.
unsafe_bucket_size
Zwraca liczbę elementów w określonym zasobniku tego kontenera.
size_type unsafe_bucket_size(size_type _Bucket);
Parametry
_Wiadro
Zasobnik do wyszukania.
Wartość zwracana
Bieżąca liczba zasobników w tym kontenerze.
unsafe_cbegin
Zwraca iterator do pierwszego elementu w tym kontenerze dla określonego zasobnika.
const_local_iterator unsafe_cbegin(size_type _Bucket) const;
Parametry
_Wiadro
Indeks zasobnika.
Wartość zwracana
Iterator wskazujący początek zasobnika.
unsafe_cend
Zwraca iterator do lokalizacji, która zakończyła się powodzeniem ostatniego elementu w określonym zasobniku.
const_local_iterator unsafe_cend(size_type _Bucket) const;
Parametry
_Wiadro
Indeks zasobnika.
Wartość zwracana
Iterator wskazujący początek zasobnika.
unsafe_end
Zwraca iterator do ostatniego elementu w tym kontenerze dla określonego zasobnika.
local_iterator unsafe_end(size_type _Bucket);
const_local_iterator unsafe_end(size_type _Bucket) const;
Parametry
_Wiadro
Indeks zasobnika.
Wartość zwracana
Iterator wskazujący na koniec zasobnika.
unsafe_erase
Usuwa elementy z concurrent_unordered_set
określonych pozycji. Ta metoda nie jest bezpieczna współbieżności.
iterator unsafe_erase(
const_iterator _Where);
size_type unsafe_erase(
const key_type& KVal);
iterator unsafe_erase(
const_iterator first,
const_iterator last);
Parametry
_Gdzie
Pozycja iteratora do wymazywania z.
KVal
Wartość klucza do wymazywania.
pierwszy
ostatni
Iteratory.
Wartość zwracana
Pierwsze dwie funkcje składowe zwracają iterator, który wyznacza pierwszy element pozostały poza usuniętymi elementami lub end(), jeśli taki element nie istnieje. Trzecia funkcja składowa zwraca liczbę usuniętych elementów.
Uwagi
Pierwsza funkcja składowa usuwa element wskazywany przez _Where
element . Druga funkcja składowa usuwa elementy w zakresie [ _Begin
, _End
).
Trzecia funkcja składowa usuwa elementy w zakresie rozdzielonym przez equal_range(KVal).
unsafe_max_bucket_count
Zwraca maksymalną liczbę zasobników w tym kontenerze.
size_type unsafe_max_bucket_count() const;
Wartość zwracana
Maksymalna liczba zasobników w tym kontenerze.
Zobacz też
Przestrzeń nazw współbieżności
Równoległe kontenery oraz obiekty