Udostępnij przez


concurrent_unordered_multimap — Klasa

Klasa concurrent_unordered_multimap jest kontenerem bezpiecznym ze 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_multimap : public details::_Concurrent_hash<details::_Concurrent_unordered_map_traits<K,
    _Element_type,
details::_Hash_compare<K,
    _Hasher,
key_equality>,
    _Allocator_type,
true>>;

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ółowe informacje o alokacji i cofnięciu przydziału pamięci dla wektora współbieżnego. Ten argument jest opcjonalny, a wartość domyślna to std::allocator<std::pair<K, _Element_type>>.

Członkowie

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_multimap Przeciążone. Tworzy współbieżną nieurządkowaną wielomapę.

Metody publiczne

Nazwa/nazwisko opis
hash_function Zwraca przechowywany obiekt funkcji skrótu.
Wstawić Przeciążone. Dodaje elementy do concurrent_unordered_multimap obiektu.
key_eq Zwraca przechowywany obiekt funkcji porównywania równości.
Wymiany Zamienia zawartość dwóch concurrent_unordered_multimap obiektów. Ta metoda nie jest bezpieczna współbieżności.
unsafe_erase Przeciążone. Usuwa elementy z concurrent_unordered_multimap 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_multimap obiektu do tego obiektu. Ta metoda nie jest bezpieczna współbieżności.

Uwagi

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

Hierarchia dziedziczenia

_Traits

_Concurrent_hash

concurrent_unordered_multimap

Wymagania

Nagłówek: concurrent_unordered_map.h

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

Rozpocząć

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.

Wyczyść

Usuwa wszystkie elementy w kontenerze współbieżnych. Ta funkcja nie jest bezpieczna współbieżności.

void clear();

concurrent_unordered_multimap

Tworzy współbieżną nieurządkowaną wielomapę.

explicit concurrent_unordered_multimap(
    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_multimap(
    const allocator_type& _Allocator);

template <typename _Iterator>
concurrent_unordered_multimap(_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_multimap(
    const concurrent_unordered_multimap& _Umap);

concurrent_unordered_multimap(
    const concurrent_unordered_multimap& _Umap,
    const allocator_type& _Allocator);

concurrent_unordered_multimap(
    concurrent_unordered_multimap&& _Umap);

Parametry

_Sterująca
Typ iteratora wejściowego.

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

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

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

_Programu przydzielania
Alokator dla tej nieurządzanej wielomapy.

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

_Końcu
Położenie pierwszego elementu poza zakresem elementów do skopiowania.

_Umap
Obiekt źródłowy concurrent_unordered_multimap do kopiowania elementów.

Uwagi

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

Pierwszy konstruktor określa pustą początkową wielomapę i jawnie określa liczbę zasobników, funkcję skrótu, funkcję równości i typ alokatora do użycia.

Drugi konstruktor określa alokator dla nieurządkowanego wielomapy.

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

Czwarte i piąte konstruktory określają kopię współbieżnych nieurządkowanych wielomap _Umap.

Ostatni konstruktor określa przeniesienie współbieżnego nieurządkowanego wielomapy _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

Zwraca przechowywany obiekt funkcji skrótu.

hasher hash_function() const;

Wartość zwracana

Przechowywany obiekt funkcji skrótu.

insert

Dodaje elementy do concurrent_unordered_multimap obiektu.

iterator 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>
iterator 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.

Pierwszym
Początek zakresu do wstawienia.

Ostatnio
Koniec zakresu do wstawienia.

Wartość zwracana

Iterator wskazujący lokalizację wstawiania.

Uwagi

Pierwsza funkcja składowa wstawia element value w kontrolowanej sekwencji, a następnie zwraca iterator, który wyznacza wstawiony element.

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_multimap obiektu do tego obiektu. Ta metoda nie jest bezpieczna współbieżności.

concurrent_unordered_multimap& operator= (const concurrent_unordered_multimap& _Umap);

concurrent_unordered_multimap& operator= (concurrent_unordered_multimap&& _Umap);

Parametry

_Umap
Obiekt źródłowy concurrent_unordered_multimap .

Wartość zwracana

Odwołanie do tego concurrent_unordered_multimap obiektu.

Uwagi

Po wymazaniu wszystkich istniejących elementów w współbieżnym nieurządkowanym wielomapie kopiuje lub przenosi zawartość _Umap do współbieżnej nieurządkowanej wielomapyoperator=.

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

void swap(concurrent_unordered_multimap& _Umap);

Parametry

_Umap
Obiekt concurrent_unordered_multimap 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_multimap 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.

Pierwszym
Ostatnio
Iteratory.

Wartość zwracana

Pierwsze dwie funkcje składowe zwracają iterator, który wyznacza pierwszy element pozostały poza usuniętymi elementami lub concurrent_unordered_multimap::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_multimap::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