Udostępnij za pośrednictwem


concurrent_unordered_map — Klasa

Klasa concurrent_unordered_map to kontener bezpieczny pod kontrolą współbieżności, który kontroluje różną długość sekwencji elementów typu std::pair<const K, _Element_type>. 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 _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>>;

Parametry

K
Typ klucza.

_Element_type
Typ mapowany.

_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żnej nieuporządkowanej mapy. Ten argument jest opcjonalny, a wartość domyślna to std::allocator<std::pair<K, _Element_type>>.

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.
mapped_type Typ mapowanej wartości skojarzonej z poszczególnymi kluczami.
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_map Przeciążone. Tworzy współbieżną nieurządkowaną mapę.

Metody publiczne

Nazwa/nazwisko opis
przy Przeciążone. Znajduje element w obiekcie concurrent_unordered_map z określoną wartością klucza. Ta metoda jest bezpieczna współbieżności.
hash_function Pobiera przechowywany obiekt funkcji mieszania.
wstawiać Przeciążone. Dodaje elementy do concurrent_unordered_map obiektu.
key_eq Pobiera przechowywany obiekt funkcji porównywania równości.
zamiana Zamienia zawartość dwóch concurrent_unordered_map obiektów. Ta metoda nie jest bezpieczna współbieżności.
unsafe_erase Przeciążone. Usuwa elementy z concurrent_unordered_map określonych pozycji. Ta metoda nie jest bezpieczna współbieżności.

Operatory publiczne

Nazwa/nazwisko opis
operator[] Przeciążone. Znajduje lub wstawia element z określonym kluczem. Ta metoda jest bezpieczna współbieżności.
operator = Przeciążone. Przypisuje zawartość innego concurrent_unordered_map obiektu do tego obiektu. Ta metoda nie jest bezpieczna współbieżności.

Uwagi

Aby uzyskać szczegółowe informacje na concurrent_unordered_map temat klasy, zobacz Parallel Containers and Objects (Kontenery równoległe i obiekty).

Hierarchia dziedziczenia

_Traits

_Concurrent_hash

concurrent_unordered_map

Wymagania

Nagłówek: concurrent_unordered_map.h

Przestrzeń nazw: współbieżność

o

Znajduje element w obiekcie concurrent_unordered_map z określoną wartością klucza. Ta metoda jest bezpieczna współbieżności.

mapped_type& at(const key_type& KVal);

const mapped_type& at(const key_type& KVal) const;

Parametry

KVal
Wartość klucza do znalezienia.

Wartość zwracana

Odwołanie do wartości danych znalezionego elementu.

Uwagi

Jeśli wartość klucza argumentu nie zostanie znaleziona, funkcja zgłasza obiekt klasy out_of_range.

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_map

Tworzy współbieżną nieurządkowaną 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);

Parametry

_Sterująca
Typ iteratora wejściowego.

_Number_of_buckets
Początkowa liczba zasobników dla tej nieurządzanej mapy.

_Hasher
Funkcja skrótu dla tej nieurządzanej mapy.

key_equality
Funkcja porównania równości dla tej nieurządzanej mapy.

_Programu przydzielania
Alokator dla tej nieurządkowanej mapy.

_Zaczynać
Położenie pierwszego elementu w zakresie elementów do skopiowania.

_Koniec
Położenie pierwszego elementu poza zakresem elementów do skopiowania.

_Umap
Obiekt źródłowy concurrent_unordered_map do kopiowania lub przenoszenia elementów.

Uwagi

Wszystkie konstruktory przechowują obiekt _Allocator alokatora i inicjują nieurządkowaną mapę.

Pierwszy konstruktor określa pustą mapę początkową 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ądzanej mapy.

Trzeci konstruktor określa wartości dostarczone przez zakres iteratora [ _Begin, _End).

Czwarte i piąte konstruktory określają kopię współbieżnej nieurządkowanej mapy _Umap.

Ostatni konstruktor określa przeniesienie współbieżnej nieurządzanej mapy _Umap.

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

Pobiera przechowywany obiekt funkcji mieszania.

hasher hash_function() const;

Wartość zwracana

Przechowywany obiekt funkcji skrótu.

insert

Dodaje elementy do concurrent_unordered_map 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 mapy.

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ą valuepolecenia . 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

Pobiera 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[]

Znajduje lub wstawia element z określonym kluczem. Ta metoda jest bezpieczna współbieżności.

mapped_type& operator[](const key_type& kval);

mapped_type& operator[](key_type&& kval);

Parametry

KVal
Wartość klucza do

znajdź lub wstaw.

Wartość zwracana

Odwołanie do wartości danych znalezionego lub wstawionego elementu.

Uwagi

Jeśli wartość klucza argumentu nie zostanie znaleziona, zostanie ona wstawiona wraz z wartością domyślną typu danych.

operator[] może służyć do wstawiania elementów do mapy m przy użyciu metody m[key] = DataValue;, gdzie DataValue jest wartością mapped_type elementu z wartością keyklucza .

W przypadku używania operator[] polecenia do wstawiania elementów zwrócone odwołanie nie wskazuje, czy wstawienie zmienia wstępnie istniejący element, czy tworzy nowy. Funkcje find składowe i wstawianie mogą służyć do określenia, czy element z określonym kluczem jest już obecny przed wstawieniem.

operator =

Przypisuje zawartość innego concurrent_unordered_map obiektu do tego obiektu. Ta metoda nie jest bezpieczna współbieżności.

concurrent_unordered_map& operator= (const concurrent_unordered_map& _Umap);

concurrent_unordered_map& operator= (concurrent_unordered_map&& _Umap);

Parametry

_Umap
Obiekt źródłowy concurrent_unordered_map .

Wartość zwracana

Odwołanie do tego concurrent_unordered_map obiektu.

Uwagi

Po wymazaniu wszystkich istniejących elementów wektor współbieżny kopiuje lub przenosi zawartość _Umap do wektora operator= współbieżnego.

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_map obiektów. Ta metoda nie jest bezpieczna współbieżności.

void swap(concurrent_unordered_map& _Umap);

Parametry

_Umap
Obiekt concurrent_unordered_map 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_map określonych pozycji. Ta metoda nie jest bezpieczna współbieżności.

iterator unsafe_erase(
    const_iterator _Where);

iterator unsafe_erase(
    const_iterator _Begin,
    const_iterator _End);

size_type unsafe_erase(
    const key_type& KVal);

Parametry

_Gdzie
Pozycja iteratora do wymazywania z.

_Zaczynać
Położenie pierwszego elementu w zakresie elementów do wymazywania.

_Koniec
Położenie pierwszego elementu poza zakresem elementów do wymazywania.

KVal
Wartość klucza do wymazywania.

Wartość zwracana

Pierwsze dwie funkcje składowe zwracają iterator, który wyznacza pierwszy element pozostały poza usuniętymi elementami lub concurrent_unordered_map::end(), jeśli taki element nie istnieje. Trzecia funkcja składowa zwraca liczbę usuniętych elementów.

Uwagi

Pierwsza funkcja składowa usuwa element kontrolowanej sekwencji wskazywanej przez _Whereelement . Druga funkcja składowa usuwa elementy w zakresie [ _Begin, _End).

Trzecia funkcja składowa usuwa elementy w zakresie rozdzielonym przez concurrent_unordered_map::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