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ý _Where
odkazuje . 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.