Sdílet prostřednictvím


concurrent_unordered_multiset – třída

Třída concurrent_unordered_multiset je kontejner bezpečný pro souběžnost, který řídí různou sekvenci délky prvků typu K. 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 _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_multiset : public details::_Concurrent_hash<details::_Concurrent_unordered_set_traits<K,
    details::_Hash_compare<K,
_Hasher,
    key_equality>,
_Allocator_type,
    true>>;

Parametry

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

Členové

Veřejné definice typedef

Název 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
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

Název Popis
concurrent_unordered_multiset Přetíženo. Vytvoří souběžnou neuspořádanou vícemnožinu.

Veřejné metody

Název Popis
hash_function Vrátí uložený objekt funkce hash.
vložit Přetíženo. Přidá do objektu concurrent_unordered_multiset prvky.
key_eq Uložený objekt funkce porovnání rovnosti.
vyměnit Prohodí obsah dvou concurrent_unordered_multiset objektů. Tato metoda není bezpečná pro souběžnost.
unsafe_erase Přetíženo. Odebere prvky ze concurrent_unordered_multiset zadaných pozic. Tato metoda není bezpečná pro souběžnost.

Veřejné operátory

Název Popis
operator= Přetíženo. Přiřadí obsah jiného concurrent_unordered_multiset objektu k tomuto objektu. Tato metoda není bezpečná pro souběžnost.

Poznámky

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

Hierarchie dědičnosti

_Traits

_Concurrent_hash

concurrent_unordered_multiset

Požadavky

Hlavička: concurrent_unordered_set.h

Namespace: 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;

Návratová 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;

Návratová 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;

Návratová 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_multiset

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

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

template <typename _Iterator>
concurrent_unordered_multiset(_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_multiset(
    const concurrent_unordered_multiset& _Uset);

concurrent_unordered_multiset(
    const concurrent_unordered_multiset& _Uset,
    const allocator_type& _Allocator);

concurrent_unordered_multiset(
    concurrent_unordered_multiset&& _Uset);

Parametry

_Iterátor
Typ vstupního iterátoru.

_Number_of_buckets
Počáteční počet kbelíků pro tuto neuspořádanou vícemnožinu.

_Hasher
Funkce hash pro tuto neuspořádanou vícemnožinu.

key_equality
Funkce porovnání rovnosti pro tuto neuspořádanou vícemnožinu.

_Alokátor
Alokátor pro tuto neuspořádanou vícemnožinu.

první
poslední
_Uset
Zdrojový concurrent_unordered_multiset objekt pro přesunutí prvků.

Poznámky

Všechny konstruktory ukládají objekt _Allocator alokátoru a inicializují neuspořádanou vícemnožinu.

První konstruktor určuje prázdnou počáteční multisetu 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řádanou vícemnožinu.

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

Čtvrtý a pátý konstruktor určuje kopii souběžné neuspořádané víceset _Uset.

Poslední konstruktor určuje přesunutí souběžné neuspořádané víceset _Uset.

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.

Návratová 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;

Návratová 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;

Návratová 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.

Návratová 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.

Návratová 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;

Návratová hodnota

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

hash_function

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

hasher hash_function() const;

Návratová hodnota

Uložený objekt funkce hash.

insert

Přidá do objektu concurrent_unordered_multiset 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

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

V
Typ vložené hodnoty.

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.

Návratová 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

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

key_equal key_eq() const;

Návratová 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;

Návratová 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

Návratová 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;

Návratová 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_multiset objektu k tomuto objektu. Tato metoda není bezpečná pro souběžnost.

concurrent_unordered_multiset& operator= (const concurrent_unordered_multiset& _Uset);

concurrent_unordered_multiset& operator= (concurrent_unordered_multiset&& _Uset);

Parametry

_Uset
Zdrojový concurrent_unordered_multiset objekt.

Návratová hodnota

Odkaz na tento concurrent_unordered_multiset objekt.

Poznámky

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

předělávka

Znovu vytvoří hashovací tabulku.

void rehash(size_type _Buckets);

Parametry

_Vědra
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;

Návratová 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_multiset objektů. Tato metoda není bezpečná pro souběžnost.

void swap(concurrent_unordered_multiset& _Uset);

Parametry

_Uset
Objekt concurrent_unordered_multiset , 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.

Návratová 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.

Návratová 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;

Návratová 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.

Návratová 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.

Návratová 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.

Návratová 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.

Návratová hodnota

Iterátor ukazující na konec kontejneru.

unsafe_erase

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

iterator unsafe_erase(
    const_iterator _Where);

iterator unsafe_erase(
    const_iterator first,
    const_iterator last);

size_type unsafe_erase(
    const key_type& KVal);

Parametry

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

první
poslední
KVal
Hodnota klíče, kterou chcete vymazat.

Návratová 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 end(), pokud žádný takový prvek neexistuje. Třetí členová funkce vrátí počet prvků, které odebere.

Poznámky

První člen funkce odebere prvek, na který _Whereodkazuje . Druhá členová funkce odebere prvky v oblasti [ _Begin, _End).

Třetí členová funkce odebere prvky v oblasti oddělené equal_range(KVal).

unsafe_max_bucket_count

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

size_type unsafe_max_bucket_count() const;

Návratová hodnota

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

Viz také

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