Megosztás a következőn keresztül:


concurrent_unordered_multiset osztály

A concurrent_unordered_multiset osztály egy egyidejűségbiztos tároló, amely a K típusú elemek változó hosszúságú sorozatát vezérli. A szekvencia olyan módon jelenik meg, amely lehetővé teszi az egyidejűségmentes hozzáfűzést, az elemhozzáférést, az iterátor-hozzáférést és az iterátor-bejárási műveleteket. Itt az egyidejűség-biztonságos érték azt jelenti, hogy a mutató vagy az iterátor mindig érvényes. Ez nem garantálja az elemek inicializálását vagy egy adott bejárási sorrendet.

Szintaxis

template <typename K,
    typename _Hasher = std::hash<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>>;

Paraméterek

K
A kulcs típusa.

_Hasher
A kivonatfüggvény objektumtípusa. Ez az argumentum nem kötelező, és az alapértelmezett érték std::hash<K>.

key_equality
Az egyenlőségi összehasonlító függvény objektumtípusa. Ez az argumentum nem kötelező, és az alapértelmezett érték std::equal_to<K>.

_Allocator_type
Az a típus, amely a tárolt allokátorobjektumot jelöli, amely az egyidejű vektor memóriafoglalásával és felszabadítással kapcsolatos részleteket foglal magában. Ez az argumentum nem kötelező, és az alapértelmezett érték std::allocator<K>.

Tagok

Nyilvános typedefs

Név Leírás
allocator_type A tárterület kezelésére szolgáló kiosztó típusa.
const_iterator A szabályozott sorozat állandó iterátorának típusa.
const_local_iterator A konstans gyűjtő iterátorának típusa a szabályozott sorozathoz.
const_pointer Az elemre mutató állandó mutató típusa.
const_reference Az elemre mutató állandó hivatkozás típusa.
difference_type A két elem közötti aláírt távolság típusa.
hasher A kivonatfüggvény típusa.
iterator A szabályozott sorozat iterátorának típusa.
key_equal Az összehasonlító függvény típusa.
key_type A rendelési kulcs típusa.
local_iterator A vezérelt sorozat gyűjtő iterátorának típusa.
pointer Az elemhez mutató mutató típusa.
reference Az elemre mutató hivatkozás típusa.
size_type A két elem közötti aláíratlan távolság típusa.
value_type Az elem típusa.

Nyilvános konstruktorok

Név Leírás
concurrent_unordered_multiset Túlterhelt. Egyidejű, rendezetlen többhalmazt hoz létre.

Nyilvános metódusok

Név Leírás
hash_function A tárolt kivonatfüggvény-objektumot adja vissza.
beszúrása Túlterhelt. Elemeket ad hozzá a concurrent_unordered_multiset objektumhoz.
key_eq A tárolt egyenlőség-összehasonlító függvény objektuma.
felcserélési Két concurrent_unordered_multiset objektum tartalmának felcserélése. Ez a módszer nem egyidejűségbiztos.
unsafe_erase Túlterhelt. Eltávolítja az elemeket a concurrent_unordered_multiset a megadott pozíciókban. Ez a módszer nem egyidejűségbiztos.

Nyilvános operátorok

Név Leírás
operátor= Túlterhelt. Egy másik concurrent_unordered_multiset objektum tartalmát rendeli hozzá ehhez. Ez a módszer nem egyidejűségbiztos.

Megjegyzések

A concurrent_unordered_multiset osztályról további információt Párhuzamos tárolók és objektumokcímű témakörben talál.

Öröklési hierarchia

_Traits

_Concurrent_hash

concurrent_unordered_multiset

Követelmények

fejléc: concurrent_unordered_set.h

névtér: egyidejűség

kezdődik

Egy iterátort ad vissza, amely az egyidejű tároló első elemére mutat. Ez a módszer az egyidejűség biztonságos.

iterator begin();

const_iterator begin() const;

Visszaadott érték

Az egyidejű tároló első elemének iterátora.

cbegin

Egy konstans iterátort ad vissza, amely az egyidejű tároló első elemére mutat. Ez a módszer az egyidejűség biztonságos.

const_iterator cbegin() const;

Visszaadott érték

Konstans iterátor az egyidejű tároló első eleméhez.

cend

Egy konstans iterátort ad vissza, amely az egyidejű tároló utolsó elemét követő helyre mutat. Ez a módszer az egyidejűség biztonságos.

const_iterator cend() const;

Visszaadott érték

Egy konstans iterátor az egyidejű tároló utolsó elemét követő helyre.

világos

Törli az egyidejű tároló összes elemét. Ez a függvény nem biztonságos egyidejűség.

void clear();

concurrent_unordered_multiset

Egyidejű, rendezetlen többhalmazt hoz létre.

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);

Paraméterek

_Iterator
A bemeneti iterátor típusa.

_Number_of_buckets
A rendezetlen többhalmazhoz tartozó gyűjtők kezdeti száma.

_Hasher
A rendezetlen többhalmaz kivonatfüggvénye.

key_equality
A rendezetlen többhalmaz egyenlőség-összehasonlító függvénye.

_Címfoglaló
A rendezetlen többkészlet kiosztója.

első
utolsó
_Uset
A forrás concurrent_unordered_multiset objektum, amelyből elemeket helyezhet át.

Megjegyzések

Minden konstruktor tárol egy allokátorobjektumot _Allocator, és inicializálja a rendezetlen többhalmazt.

Az első konstruktor egy üres kezdeti többkészletet határoz meg, és explicit módon megadja a használandó gyűjtők, kivonatfüggvények, egyenlőségfüggvények és kiosztótípus számát.

A második konstruktor egy allokátort ad meg a rendezetlen többhalmazhoz.

A harmadik konstruktor az iterátortartomány által megadott értékeket adja meg [ _Begin, _End).

A negyedik és ötödik konstruktorok az egyidejűleg nem rendezett többhalmazos _Usetegy példányát adják meg.

Az utolsó konstruktor az egyidejűleg rendezetlen többhalmazos _Usetáthelyezését adja meg.

gróf

Megszámolja a megadott kulcsnak megfelelő elemek számát. Ez a függvény az egyidejűség biztonságos.

size_type count(const key_type& KVal) const;

Paraméterek

KVal
A keresendő kulcs.

Visszaadott érték

A kulcs hányszor jelenik meg a tárolóban.

üres

Ellenőrzi, hogy nincsenek-e elemek. Ez a módszer az egyidejűség biztonságos.

bool empty() const;

Visszaadott érték

true, ha az egyidejű tároló üres, false ellenkező esetben.

Megjegyzések

Egyidejű beszúrások esetén, hogy az egyidejű tároló üres-e, a függvény meghívása után azonnal megváltozhat, mielőtt a visszatérési érték beolvasható.

vég

Egy olyan iterátort ad vissza, amely az egyidejű tároló utolsó elemét követő helyre mutat. Ez a módszer az egyidejűség biztonságos.

iterator end();

const_iterator end() const;

Visszaadott érték

Az egyidejű tároló utolsó elemét követő iterátor.

equal_range

Megkeres egy megadott kulccsal egyező tartományt. Ez a függvény az egyidejűség biztonságos.

std::pair<iterator,
    iterator> equal_range(
    const key_type& KVal);

std::pair<const_iterator,
    const_iterator> equal_range(
    const key_type& KVal) const;

Paraméterek

KVal
A keresendő kulcsérték.

Visszaadott érték

Egy pár, ahol az első elem az elejétől egy iterátor, a második elem pedig egy iterátor a tartomány végéig.

Megjegyzések

Lehetséges, hogy az egyidejű beszúrások további kulcsokat is beszúrnak a kezdő iterátor és a záró iterátor előtt.

talál

Megkeres egy adott kulccsal egyező elemet. Ez a függvény az egyidejűség biztonságos.

iterator find(const key_type& KVal);

const_iterator find(const key_type& KVal) const;

Paraméterek

KVal
A keresendő kulcsérték.

Visszaadott érték

Egy iterátor, amely a megadott kulcsnak megfelelő első elem helyére mutat, vagy az iterátor end(), ha nincs ilyen elem.

get_allocator

Az egyidejű tároló tárolt kiosztóobjektumát adja vissza. Ez a módszer az egyidejűség biztonságos.

allocator_type get_allocator() const;

Visszaadott érték

Az egyidejű tároló tárolt kiosztóobjektuma.

hash_function

A tárolt kivonatfüggvény-objektumot adja vissza.

hasher hash_function() const;

Visszaadott érték

A tárolt kivonatfüggvény objektuma.

beilleszt

Elemeket ad hozzá a concurrent_unordered_multiset objektumhoz.

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);

Paraméterek

_Iterator
A beszúráshoz használt iterátor típusa.

V
A beszúrt érték típusa.

érték
A beszúrandó érték.

_Hol
A beszúrási pont keresésének kezdő helye.

első
A beszúrni kívánt tartomány kezdete.

utolsó
A beszúrni kívánt tartomány vége.

Visszaadott érték

A beszúrási helyre mutató iterátor.

Megjegyzések

Az első tagfüggvény beszúrja a value elemet a szabályozott sorrendbe, majd visszaadja a beszúrt elemet meghatározó iterátort.

A második tagfüggvény a insert(value) függvényt adja vissza, amely kezdőhelyként szolgál _Where a szabályozott sorrendben a beszúrási pont kereséséhez.

A harmadik tagfüggvény beszúrja az elemértékek sorozatát az [first, last) tartományból.

Az utolsó két tagfüggvény ugyanúgy viselkedik, mint az első kettő, kivéve, hogy value a beszúrt érték létrehozásához használatos.

key_eq

A tárolt egyenlőség-összehasonlító függvény objektuma.

key_equal key_eq() const;

Visszaadott érték

A tárolt egyenlőség-összehasonlító függvény objektuma.

load_factor

Kiszámítja és visszaadja a tároló aktuális terhelési tényezőit. A terhelési tényező a tároló elemeinek száma a gyűjtők számával osztva.

float load_factor() const;

Visszaadott érték

A tároló terhelési tényezője.

max_load_factor

Lekéri vagy beállítja a tároló maximális terhelési tényezőjének értékét. A maximális terhelési tényező az elemek legnagyobb száma, mint bármely gyűjtőben, mielőtt a tároló növeli a belső táblát.

float max_load_factor() const;

void max_load_factor(float _Newmax);

Paraméterek

_Newmax

Visszaadott érték

Az első tagfüggvény a tárolt maximális terhelési tényezőt adja vissza. A második tagfüggvény nem ad vissza értéket, hanem out_of_range kivételt ad vissza, ha a megadott terhelési tényező érvénytelen.

maximális méret

Az egyidejű tároló maximális méretét adja vissza, amelyet az elosztó határoz meg. Ez a módszer az egyidejűség biztonságos.

size_type max_size() const;

Visszaadott érték

Az egyidejű tárolóba beszúrható elemek maximális száma.

Megjegyzések

Ez a felső határérték valójában magasabb lehet, mint amit a tároló ténylegesen tárolhat.

operátor=

Egy másik concurrent_unordered_multiset objektum tartalmát rendeli hozzá ehhez. Ez a módszer nem egyidejűségbiztos.

concurrent_unordered_multiset& operator= (const concurrent_unordered_multiset& _Uset);

concurrent_unordered_multiset& operator= (concurrent_unordered_multiset&& _Uset);

Paraméterek

_Uset
A forrás concurrent_unordered_multiset objektum.

Visszaadott érték

Hivatkozás erre a concurrent_unordered_multiset objektumra.

Megjegyzések

Az egyidejűleg rendezetlen többhalmaz meglévő elemeinek törlése után operator= másolhatja vagy áthelyezheti a _Uset tartalmát az egyidejű rendezetlen többhalmazba.

Felmelegít

Újraépíti a kivonattáblát.

void rehash(size_type _Buckets);

Paraméterek

_Vödör
A gyűjtők kívánt száma.

Megjegyzések

A tagfüggvény módosítja a legalább _Buckets gyűjtők számát, és szükség szerint újraépíti a kivonattáblát. A gyűjtők számának 2-esnek kell lennie. Ha nem 2-es hatvány, akkor a következő legnagyobb 2-es teljesítményre lesz kerekítve.

Kivételt out_of_range, ha a gyűjtők száma érvénytelen (vagy 0 vagy nagyobb, mint a gyűjtők maximális száma).

méret

Az egyidejű tároló elemeinek számát adja vissza. Ez a módszer az egyidejűség biztonságos.

size_type size() const;

Visszaadott érték

A tárolóban lévő elemek száma.

Megjegyzések

Egyidejű beszúrások esetén az egyidejű tároló elemeinek száma a függvény meghívása után azonnal megváltozhat, mielőtt a visszatérési érték beolvasható.

elcserél

Két concurrent_unordered_multiset objektum tartalmának felcserélése. Ez a módszer nem egyidejűségbiztos.

void swap(concurrent_unordered_multiset& _Uset);

Paraméterek

_Uset
A concurrent_unordered_multiset objektum, amellyel felcserélhet.

unsafe_begin

Egy iterátort ad vissza a tároló első eleméhez egy adott gyűjtőhöz.

local_iterator unsafe_begin(size_type _Bucket);

const_local_iterator unsafe_begin(size_type _Bucket) const;

Paraméterek

_Vödör
A gyűjtő indexe.

Visszaadott érték

A gyűjtő elejére mutató iterátor.

unsafe_bucket

Visszaadja azt a gyűjtőindexet, amelyet egy adott kulcs leképz ebben a tárolóban.

size_type unsafe_bucket(const key_type& KVal) const;

Paraméterek

KVal
A keresett elemkulcs.

Visszaadott érték

A tároló kulcsának gyűjtőindexe.

unsafe_bucket_count

A tárolóban lévő gyűjtők aktuális számát adja vissza.

size_type unsafe_bucket_count() const;

Visszaadott érték

A tárolóban lévő gyűjtők aktuális száma.

unsafe_bucket_size

A tároló egy adott gyűjtőjében lévő elemek számát adja vissza.

size_type unsafe_bucket_size(size_type _Bucket);

Paraméterek

_Vödör
A keresendő gyűjtő.

Visszaadott érték

A tárolóban lévő gyűjtők aktuális száma.

unsafe_cbegin

Egy iterátort ad vissza a tároló első eleméhez egy adott gyűjtőhöz.

const_local_iterator unsafe_cbegin(size_type _Bucket) const;

Paraméterek

_Vödör
A gyűjtő indexe.

Visszaadott érték

A gyűjtő elejére mutató iterátor.

unsafe_cend

Egy iterátort ad vissza egy adott gyűjtő utolsó elemét követő helyre.

const_local_iterator unsafe_cend(size_type _Bucket) const;

Paraméterek

_Vödör
A gyűjtő indexe.

Visszaadott érték

A gyűjtő elejére mutató iterátor.

unsafe_end

Egy iterátort ad vissza a tároló utolsó eleméhez egy adott gyűjtőhöz.

local_iterator unsafe_end(size_type _Bucket);

const_local_iterator unsafe_end(size_type _Bucket) const;

Paraméterek

_Vödör
A gyűjtő indexe.

Visszaadott érték

Egy iterátor, amely a gyűjtő végére mutat.

unsafe_erase

Eltávolítja az elemeket a concurrent_unordered_multiset a megadott pozíciókban. Ez a módszer nem egyidejűségbiztos.

iterator unsafe_erase(
    const_iterator _Where);

iterator unsafe_erase(
    const_iterator first,
    const_iterator last);

size_type unsafe_erase(
    const key_type& KVal);

Paraméterek

_Hol
A törölni kívánt iterátorpozíció.

első
utolsó
KVal
A törölni kívánt kulcsérték.

Visszaadott érték

Az első két tagfüggvény egy iterátort ad vissza, amely kijelöli az eltávolított elemeken kívül fennmaradó első elemet, vagy () végét, ha nincs ilyen elem. A harmadik tagfüggvény az eltávolított elemek számát adja vissza.

Megjegyzések

Az első tagfüggvény eltávolítja a _Whereáltal mutatott elemet. A második tagfüggvény eltávolítja a tartomány elemeit [ _Begin, _End).

A harmadik tagfüggvény eltávolítja a equal_range(KVal) által tagolt tartomány elemeit.

unsafe_max_bucket_count

A tárolóban lévő gyűjtők maximális számát adja vissza.

size_type unsafe_max_bucket_count() const;

Visszaadott érték

A tárolóban lévő gyűjtők maximális száma.

Lásd még:

egyidejű névtér
párhuzamos tárolók és objektumok