Sdílet prostřednictvím


concurrent_unordered_multimap – třída

Třída concurrent_unordered_multimap je kontejner bezpečný pro souběžnost, který řídí různou sekvenci délky prvků typu std::pair<const K, _Element_type>. Sekvence je reprezentována způsobem, který umožňuje souběžné připojení, přístup k prvkům, přístup k iterátoru a procházení iterátoru. V této chvíli souběžnost znamená, že ukazatele nebo iterátory jsou vždy platné. Nejedná se o záruku inicializace prvků ani konkrétního pořadí procházení.

Syntaxe

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
Klíčový typ

_Element_type
Mapovaný typ

_Hasher
Typ objektu hashovací funkce Tento argument je nepovinný a výchozí hodnota je std::hash<K>.

key_equality
Typ objektu funkce porovnání rovnosti Tento argument je nepovinný a výchozí hodnota je std::equal_to<K>.

_Allocator_type
Typ, který představuje uložený objekt alokátoru, který zapouzdřuje podrobnosti o přidělení a uvolnění paměti pro souběžný vektor. Tento argument je nepovinný a výchozí hodnota je std::allocator<std::pair<K, _Element_type>>.

Členové

Veřejné definice typedef

Jméno popis
allocator_type Typ alokátoru pro správu úložiště
const_iterator Typ konstantního iterátoru řízené sekvence
const_local_iterator Typ konstantního iterátoru kbelíku řízené sekvence
const_pointer Typ konstantního ukazatele na prvek
const_reference Typ konstantního odkazu na prvek
difference_type Typ vzdálenosti se znaménkem mezi dvěma prvky
hasher Typ hashovací funkce
iterator Typ iterátoru řízené sekvence
key_equal Typ funkce porovnání
key_type Typ klíče řazení
local_iterator Typ iterátoru kbelíku řízené sekvence
mapped_type Typ mapované hodnoty přiřazené ke každému klíči
pointer Typ ukazatele na prvek
reference Typ odkazu na prvek
size_type Typ vzdálenosti bez znaménka mezi dvěma prvky
value_type Typ prvku

Veřejné konstruktory

Jméno popis
concurrent_unordered_multimap Přetíženo. Vytvoří souběžnou neuspořádanou vícemapu.

Veřejné metody

Jméno popis
hash_function Vrátí uložený objekt funkce hash.
Vložit Přetíženo. Přidá do objektu concurrent_unordered_multimap prvky.
key_eq Vrátí uložený objekt funkce porovnání rovnosti.
Swap Prohodí obsah dvou concurrent_unordered_multimap objektů. Tato metoda není bezpečná pro souběžnost.
unsafe_erase Přetíženo. Odebere prvky ze concurrent_unordered_multimap zadaných pozic. Tato metoda není bezpečná pro souběžnost.

Veřejné operátory

Jméno popis
operator= Přetíženo. Přiřadí obsah jiného concurrent_unordered_multimap objektu k tomuto objektu. Tato metoda není bezpečná pro souběžnost.

Poznámky

Podrobné informace o concurrent_unordered_multimap třídě naleznete v tématu Paralelní kontejnery a objekty.

Hierarchie dědičnosti

_Traits

_Concurrent_hash

concurrent_unordered_multimap

Požadavky

Hlavička: concurrent_unordered_map.h

Obor názvů: souběžnost

Začít

Vrátí iterátor odkazující na první prvek souběžného kontejneru. Tato metoda je bezpečná pro souběžnost.

iterator begin();

const_iterator begin() const;

Vrácená hodnota

Iterátor na první prvek souběžného kontejneru.

cbegin

Vrátí const iterátor odkazující na první prvek v souběžného kontejneru. Tato metoda je bezpečná pro souběžnost.

const_iterator cbegin() const;

Vrácená hodnota

Iterátor const na první prvek souběžného kontejneru.

cend

Vrátí const iterátor odkazující na umístění úspěšné poslední prvek v souběžného kontejneru. Tato metoda je bezpečná pro souběžnost.

const_iterator cend() const;

Vrácená hodnota

Iterátor const iterátoru do umístění úspěšného posledního prvku v souběžnému kontejneru.

Jasné

Vymaže všechny prvky v souběžnému kontejneru. Tato funkce není bezpečná pro souběžnost.

void clear();

concurrent_unordered_multimap

Vytvoří souběžnou neuspořádanou vícemapu.

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

_Iterace
Typ vstupního iterátoru.

_Number_of_buckets
Počáteční počet kbelíků pro tuto neuspořádanou vícemapu

_Hasher
Funkce hash pro tuto neuspořádanou vícemapu.

key_equality
Funkce porovnání rovnosti pro tuto neuspořádanou vícemapu.

_Přidělování
Alokátor pro tuto neuspořádanou vícemapu.

_Začít
Pozice prvního prvku v oblasti prvků, které se mají zkopírovat.

_Konec
Pozice prvního prvku nad rozsah prvků, které se mají zkopírovat.

_Umap
Zdrojový concurrent_unordered_multimap objekt pro kopírování prvků.

Poznámky

Všechny konstruktory ukládají objekt _Allocator alokátoru a inicializují neuspořádaný multimap.

První konstruktor určuje prázdný počáteční multimap a explicitně určuje počet kbelíků, hash funkce, rovnosti a typ alokátoru, které se mají použít.

Druhý konstruktor určuje alokátor pro neuspořádaný multimap.

Třetí konstruktor určuje hodnoty zadané rozsahem iterátoru [ _Begin, _End).

Čtvrtý a pátý konstruktor určuje kopii souběžné neuspořádané multimapy _Umap.

Poslední konstruktor určuje přesunutí souběžné neuspořádané multimapy _Umap.

count

Spočítá počet prvků odpovídajících zadanému klíči. Tato funkce je bezpečná pro souběžnost.

size_type count(const key_type& KVal) const;

Parametry

KVal
Klíč, který chcete vyhledat.

Vrácená hodnota

Počet výskytů klíče v kontejneru

empty

Zkouší, zda nejsou přítomny žádné prvky. Tato metoda je bezpečná pro souběžnost.

bool empty() const;

Vrácená hodnota

true pokud je souběžný kontejner prázdný, false jinak.

Poznámky

V případě souběžných vložení se může okamžitě po volání této funkce změnit, zda je souběžný kontejner prázdný, a to ještě před načtením návratové hodnoty.

end

Vrátí iterátor odkazující na umístění úspěšného posledního prvku v souběžnému kontejneru. Tato metoda je bezpečná pro souběžnost.

iterator end();

const_iterator end() const;

Vrácená hodnota

Iterátor do umístění úspěšného posledního prvku v souběžného kontejneru.

equal_range

Najde oblast, která odpovídá zadanému klíči. Tato funkce je bezpečná pro souběžnost.

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
Hodnota klíče, kterou chcete vyhledat.

Vrácená hodnota

Dvojice, ve které je první prvek iterátorem na začátek a druhým prvkem je iterátor na konec rozsahu.

Poznámky

Souběžné vkládání může způsobit vložení dalších kláves za počáteční iterátor a před koncový iterátor.

find

Vyhledá prvek, který odpovídá zadanému klíči. Tato funkce je bezpečná pro souběžnost.

iterator find(const key_type& KVal);

const_iterator find(const key_type& KVal) const;

Parametry

KVal
Hodnota klíče, kterou chcete vyhledat.

Vrácená hodnota

Iterátor odkazující na umístění prvního prvku, který odpovídal zadanému klíči, nebo iterátoru end() , pokud takový prvek neexistuje.

get_allocator

Vrátí uložený objekt alokátoru pro tento souběžný kontejner. Tato metoda je bezpečná pro souběžnost.

allocator_type get_allocator() const;

Vrácená hodnota

Uložený objekt alokátoru pro tento souběžný kontejner.

hash_function

Vrátí uložený objekt funkce hash.

hasher hash_function() const;

Vrácená hodnota

Uložený objekt funkce hash.

insert

Přidá do objektu concurrent_unordered_multimap prvky.

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

_Iterace
Typ iterátoru použitý pro vložení.

V
Typ hodnoty vložené do mapy.

value
Hodnota, která se má vložit.

_Kde
Počáteční umístění pro hledání kurzoru.

První
Začátek oblasti, která se má vložit.

Poslední
Konec oblasti, která se má vložit.

Vrácená hodnota

Iterátor ukazující na místo vložení.

Poznámky

První člen funkce vloží prvek value do řízené sekvence a pak vrátí iterátor, který určuje vložený prvek.

Druhá členová funkce vrátí hodnotu insert( value), která slouží _Where jako výchozí místo v řízené sekvenci k vyhledání místa vložení.

Třetí člen funkce vloží posloupnost hodnot prvků z rozsahu [ first, last).

Poslední dvě členské funkce se chovají stejně jako první dvě, s tím rozdílem, že value se používá k vytvoření vložené hodnoty.

key_eq

Vrátí uložený objekt funkce porovnání rovnosti.

key_equal key_eq() const;

Vrácená hodnota

Uložený objekt funkce porovnání rovnosti.

load_factor

Vypočítá a vrátí aktuální zátěžový faktor kontejneru. Faktor zatížení je počet prvků v kontejneru dělený počtem kbelíků.

float load_factor() const;

Vrácená hodnota

Faktor zatížení kontejneru.

max_load_factor

Získá nebo nastaví maximální zátěžový faktor kontejneru. Maximální zátěžový faktor je největší počet prvků, než může být v libovolném kontejneru předtím, než kontejner zvětší svou interní tabulku.

float max_load_factor() const;

void max_load_factor(float _Newmax);

Parametry

_Newmax

Vrácená hodnota

První členová funkce vrátí uložený maximální zátěžový faktor. Druhá členová funkce nevrací hodnotu, ale vyvolá výjimku out_of_range , pokud zadaný faktor zatížení není platný..

max_size

Vrátí maximální velikost souběžného kontejneru určeného alokátorem. Tato metoda je bezpečná pro souběžnost.

size_type max_size() const;

Vrácená hodnota

Maximální počet prvků, které lze vložit do tohoto souběžného kontejneru.

Poznámky

Tato horní mez hodnota může být ve skutečnosti vyšší než to, co kontejner může ve skutečnosti obsahovat.

operator=

Přiřadí obsah jiného concurrent_unordered_multimap objektu k tomuto objektu. Tato metoda není bezpečná pro souběžnost.

concurrent_unordered_multimap& operator= (const concurrent_unordered_multimap& _Umap);

concurrent_unordered_multimap& operator= (concurrent_unordered_multimap&& _Umap);

Parametry

_Umap
Zdrojový concurrent_unordered_multimap objekt.

Vrácená hodnota

Odkaz na tento concurrent_unordered_multimap objekt.

Poznámky

Po vymazání všech existujících prvků v souběžné neuspořádané multimapě buď operator= zkopíruje nebo přesune obsah _Umap do souběžné neuspořádané vícemapy.

Předělávka

Znovu vytvoří hashovací tabulku.

void rehash(size_type _Buckets);

Parametry

_Kbelíky
Požadovaný počet kbelíků.

Poznámky

Členová funkce změní počet kbelíků tak, aby byla alespoň _Buckets aspoň a podle potřeby znovu sestaví tabulku hash. Počet kbelíků musí být mocnina 2. Pokud není mocnina 2, zaokrouhlí se nahoru na další největší mocninu 2.

Vyvolá výjimku out_of_range, pokud je počet kontejnerů neplatný (buď 0, nebo větší než maximální počet kbelíků).

size

Vrátí počet prvků v tomto souběžnému kontejneru. Tato metoda je bezpečná pro souběžnost.

size_type size() const;

Vrácená hodnota

Počet položek v kontejneru

Poznámky

V přítomnosti souběžných vložení se počet prvků v souběžného kontejneru může změnit hned po volání této funkce před načtením návratové hodnoty.

swap

Prohodí obsah dvou concurrent_unordered_multimap objektů. Tato metoda není bezpečná pro souběžnost.

void swap(concurrent_unordered_multimap& _Umap);

Parametry

_Umap
Objekt concurrent_unordered_multimap , se kterým se má prohodit.

unsafe_begin

Vrátí iterátor na první prvek v tomto kontejneru pro konkrétní kontejner.

local_iterator unsafe_begin(size_type _Bucket);

const_local_iterator unsafe_begin(size_type _Bucket) const;

Parametry

_Kbelík
Index kontejneru.

Vrácená hodnota

Iterátor, který ukazuje na začátek kontejneru.

unsafe_bucket

Vrátí index kontejneru, na který se v tomto kontejneru mapuje konkrétní klíč.

size_type unsafe_bucket(const key_type& KVal) const;

Parametry

KVal
Hledaný klíč prvku.

Vrácená hodnota

Index kontejneru pro klíč v tomto kontejneru.

unsafe_bucket_count

Vrátí aktuální počet kbelíků v tomto kontejneru.

size_type unsafe_bucket_count() const;

Vrácená hodnota

Aktuální počet kontejnerů v tomto kontejneru.

unsafe_bucket_size

Vrátí počet položek v konkrétním kontejneru tohoto kontejneru.

size_type unsafe_bucket_size(size_type _Bucket);

Parametry

_Kbelík
Kontejner, který chcete vyhledat.

Vrácená hodnota

Aktuální počet kontejnerů v tomto kontejneru.

unsafe_cbegin

Vrátí iterátor na první prvek v tomto kontejneru pro konkrétní kontejner.

const_local_iterator unsafe_cbegin(size_type _Bucket) const;

Parametry

_Kbelík
Index kontejneru.

Vrácená hodnota

Iterátor, který ukazuje na začátek kontejneru.

unsafe_cend

Vrátí iterátor do umístění úspěšného posledního prvku v konkrétním kontejneru.

const_local_iterator unsafe_cend(size_type _Bucket) const;

Parametry

_Kbelík
Index kontejneru.

Vrácená hodnota

Iterátor, který ukazuje na začátek kontejneru.

unsafe_end

Vrátí iterátor na poslední prvek v tomto kontejneru pro určitý kontejner.

local_iterator unsafe_end(size_type _Bucket);

const_local_iterator unsafe_end(size_type _Bucket) const;

Parametry

_Kbelík
Index kontejneru.

Vrácená hodnota

Iterátor ukazující na konec kontejneru.

unsafe_erase

Odebere prvky ze concurrent_unordered_multimap zadaných pozic. Tato metoda není bezpečná pro souběžnost.

iterator unsafe_erase(
    const_iterator _Where);

size_type unsafe_erase(
    const key_type& KVal);

iterator unsafe_erase(
    const_iterator first,
    const_iterator last);

Parametry

_Kde
Umístění iterátoru, ze které se má vymazat.

KVal
Hodnota klíče, kterou chcete vymazat.

První
Poslední
Iterátory.

Vrácená hodnota

První dvě členské funkce vrátí iterátor, který určí první prvek, který zůstane nad rámec všech odebraných prvků, nebo concurrent_unordered_multimap::end() pokud žádný takový prvek neexistuje. Třetí členová funkce vrátí počet prvků, které odebere.

Poznámky

První člen funkce odebere prvek řízené sekvence odkazované na _Where. Druhá členová funkce odebere prvky v oblasti [ _Begin, _End).

Třetí členová funkce odebere prvky v oblasti oddělené ( concurrent_unordered_multimap::equal_rangeKVal).

unsafe_max_bucket_count

Vrátí maximální počet kbelíků v tomto kontejneru.

size_type unsafe_max_bucket_count() const;

Vrácená hodnota

Maximální počet kbelíků v tomto kontejneru.

Viz také

concurrency – obor názvů
Paralelní kontejnery a objekty