Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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