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


concurrent_unordered_set osztály

A concurrent_unordered_set 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_set : public details::_Concurrent_hash<details::_Concurrent_unordered_set_traits<K, details::_Hash_compare<K, _Hasher, key_equality>, _Allocator_type, false>>;

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 az egyidejűleg rendezetlen készlet memóriafoglalásával és felszabadítással kapcsolatos adatokat tartalmazó tárolt elosztó objektumot jelöli. 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_set Túlterhelt. Egyidejű rendezetlen készletet 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_set objektumhoz.
key_eq A tárolt egyenlőség-összehasonlító függvény objektumát adja vissza.
felcserélési Két concurrent_unordered_set 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_set 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_set objektum tartalmát rendeli hozzá ehhez. Ez a módszer nem egyidejűségbiztos.

Megjegyzések

A concurrent_unordered_set 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_set

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_set

Egyidejű rendezetlen készletet hoz létre.

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

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

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

concurrent_unordered_set(
    concurrent_unordered_set&& _Uset);

Paraméterek

_Iterator
A bemeneti iterátor típusa.

_Number_of_buckets
A rendezetlen készlet gyűjtőinek kezdeti száma.

_Hasher
A rendezetlen készlet kivonatfüggvénye.

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

_Címfoglaló
A rendezetlen készlet kiosztója.

első
utolsó
_Uset
A forrás concurrent_unordered_set objektumot az elemek másolásához vagy áthelyezéséhez.

Megjegyzések

Minden konstruktor tárol egy kiosztóobjektumot _Allocator, és inicializálja a rendezetlen készletet.

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

A második konstruktor egy allokátort ad meg a rendezetlen készlethez.

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

A negyedik és az ötödik konstruktor megadja az egyidejű rendezetlen készlet másolatát _Uset.

Az utolsó konstruktor az egyidejű rendezetlen készlet áthelyezését adja meg _Uset.

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_set objektumhoz.

std::pair<iterator,
    bool> 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>
std::pair<iterator,
    bool> 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 készletbe 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

Egy iterátort és logikai értéket tartalmazó pár. További részletekért tekintse meg a Megjegyzések szakaszt.

Megjegyzések

Az első tagfüggvény határozza meg, hogy létezik-e X elem abban a sorrendben, amelynek kulcsának sorrendje megegyezik a valueéval. Ha nem, akkor létrehoz egy ilyen X elemet, és inicializálja azt value. A függvény ezután meghatározza az X-et meghatározó iterátort where. Ha beszúrás történt, a függvény std::pair(where, true)ad vissza. Ellenkező esetben std::pair(where, false)ad vissza.

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 objektumát adja vissza.

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_set objektum tartalmát rendeli hozzá ehhez. Ez a módszer nem egyidejűségbiztos.

concurrent_unordered_set& operator= (const concurrent_unordered_set& _Uset);

concurrent_unordered_set& operator= (concurrent_unordered_set&& _Uset);

Paraméterek

_Uset
A forrás concurrent_unordered_set objektum.

Visszaadott érték

Hivatkozás erre a concurrent_unordered_set objektumra.

Megjegyzések

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

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_set objektum tartalmának felcserélése. Ez a módszer nem egyidejűségbiztos.

void swap(concurrent_unordered_set& _Uset);

Paraméterek

_Uset
A concurrent_unordered_set 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_set a megadott pozíciókban. Ez a módszer nem egyidejűségbiztos.

iterator unsafe_erase(
    const_iterator _Where);

size_type unsafe_erase(
    const key_type& KVal);

iterator unsafe_erase(
    const_iterator first,
    const_iterator last);

Paraméterek

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

KVal
A törölni kívánt kulcsérték.

első
utolsó
Iterátorok.

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