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_map osztály egy egyidejűségbiztos tároló, amely különböző hosszúságú, std::pair<const K, _Element_type>típusú elemek 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 _Element_type,
typename _Hasher = std::hash<K>,
typename key_equality = std::equal_to<K>,
typename _Allocator_type = std::allocator<std::pair<const K, _Element_type>>>
class concurrent_unordered_map : public details::_Concurrent_hash<details::_Concurrent_unordered_map_traits<K, _Element_type, details::_Hash_compare<K, _Hasher, key_equality>, _Allocator_type, false>>;
Paraméterek
K
A kulcs típusa.
_Element_type
A megfeleltetett típus.
_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 térképhez tartozó memória lefoglalá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<std::pair<K, _Element_type>>.
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. |
mapped_type |
Az egyes kulcsokhoz társított megfeleltetett érték 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_map | Túlterhelt. Egyidejű rendezetlen térképet hoz létre. |
Nyilvános metódusok
| Név | Leírás |
|---|---|
Túlterhelt. Egy adott kulcsértékkel rendelkező concurrent_unordered_map egyik elemének keresése. Ez a módszer egyidejűség-biztonságos. |
|
| hash_function | Lekéri a tárolt kivonatfüggvény-objektumot. |
| beszúrása | Túlterhelt. Elemeket ad hozzá a concurrent_unordered_map objektumhoz. |
| key_eq | Lekéri a tárolt egyenlőség-összehasonlító függvény objektumát. |
| felcserélési | Két concurrent_unordered_map 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_map 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. Megkeres vagy beszúr egy elemet a megadott kulccsal. Ez a módszer egyidejűség-biztonságos. |
| operátor= | Túlterhelt. Egy másik concurrent_unordered_map objektum tartalmát rendeli hozzá ehhez. Ez a módszer nem egyidejűségbiztos. |
Megjegyzések
A concurrent_unordered_map 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_map
Követelmények
fejléc: concurrent_unordered_map.h
névtér: egyidejűség
nél
Egy adott kulcsértékkel rendelkező concurrent_unordered_map egyik elemének keresése. Ez a módszer egyidejűség-biztonságos.
mapped_type& at(const key_type& KVal);
const mapped_type& at(const key_type& KVal) const;
Paraméterek
KVal
A keresendő kulcsérték.
Visszaadott érték
Hivatkozás a talált elem adatértékére.
Megjegyzések
Ha az argumentumkulcs értéke nem található, a függvény a out_of_rangeosztály egy objektumát dobja.
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_map
Egyidejű rendezetlen térképet hoz létre.
explicit concurrent_unordered_map(
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_map(
const allocator_type& _Allocator);
template <typename _Iterator>
concurrent_unordered_map(_Iterator _Begin,
_Iterator _End,
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_map(
const concurrent_unordered_map& _Umap);
concurrent_unordered_map(
const concurrent_unordered_map& _Umap,
const allocator_type& _Allocator);
concurrent_unordered_map(
concurrent_unordered_map&& _Umap);
Paraméterek
_Iterator
A bemeneti iterátor típusa.
_Number_of_buckets
A rendezetlen térkép gyűjtőinek kezdeti száma.
_Hasher
A rendezetlen térkép kivonatfüggvénye.
key_equality
A rendezetlen térkép egyenlőség-összehasonlító függvénye.
_Címfoglaló
A rendezetlen térkép kiosztója.
_Kezdődik
A másolandó elemek tartományának első elemének pozíciója.
_Vég
Az első elem helye a másolandó elemek tartományán túl.
_Umap
A forrás concurrent_unordered_map objektumot az elemek másolásához vagy áthelyezéséhez.
Megjegyzések
Minden konstruktor tárol egy allokátorobjektumot _Allocator, és inicializálja a rendezetlen térképet.
Az első konstruktor egy üres kezdeti térképet 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 megadja a rendezetlen térkép kiosztását.
A harmadik konstruktor az iterátortartomány által megadott értékeket adja meg [ _Begin, _End).
A negyedik és az ötödik konstruktor az egyidejű rendezetlen térkép másolatát adja meg _Umap.
Az utolsó konstruktor az egyidejű rendezetlen térkép áthelyezését adja meg _Umap.
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
Lekéri a tárolt kivonatfüggvény-objektumot.
hasher hash_function() const;
Visszaadott érték
A tárolt kivonatfüggvény objektuma.
beilleszt
Elemeket ad hozzá a concurrent_unordered_map 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 térképbe 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
Lekéri a tárolt egyenlőség-összehasonlító függvény objektumát.
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[]
Megkeres vagy beszúr egy elemet a megadott kulccsal. Ez a módszer egyidejűség-biztonságos.
mapped_type& operator[](const key_type& kval);
mapped_type& operator[](key_type&& kval);
Paraméterek
KVal
A kulcs értéke a következőhöz:
keresés vagy beszúrás.
Visszaadott érték
Hivatkozás a talált vagy beszúrt elem adatértékére.
Megjegyzések
Ha az argumentumkulcs értéke nem található, akkor a rendszer beszúrja az adattípus alapértelmezett értékével együtt.
operator[] segítségével elemeket szúrhat be egy térképbe mm[key] = DataValue;használatával , ahol a DataValue az elem mapped_type értéke, amelynek kulcsértéke key.
Ha operator[] használ elemek beszúrására, a visszaadott hivatkozás nem jelzi, hogy egy beszúrás módosítja-e a meglévő elemet, vagy újat hoz létre. A tagfüggvények find és beszúrási segítségével megállapítható, hogy egy adott kulccsal rendelkező elem már megtalálható-e a beszúrás előtt.
operátor=
Egy másik concurrent_unordered_map objektum tartalmát rendeli hozzá ehhez. Ez a módszer nem egyidejűségbiztos.
concurrent_unordered_map& operator= (const concurrent_unordered_map& _Umap);
concurrent_unordered_map& operator= (concurrent_unordered_map&& _Umap);
Paraméterek
_Umap
A forrás concurrent_unordered_map objektum.
Visszaadott érték
Hivatkozás erre a concurrent_unordered_map objektumra.
Megjegyzések
A meglévő elemek egyidejű vektorának törlése után operator= másolhatja vagy áthelyezheti a _Umap tartalmát az egyidejű vektorba.
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_map objektum tartalmának felcserélése. Ez a módszer nem egyidejűségbiztos.
void swap(concurrent_unordered_map& _Umap);
Paraméterek
_Umap
A concurrent_unordered_map 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_map a megadott pozíciókban. Ez a módszer nem egyidejűségbiztos.
iterator unsafe_erase(
const_iterator _Where);
iterator unsafe_erase(
const_iterator _Begin,
const_iterator _End);
size_type unsafe_erase(
const key_type& KVal);
Paraméterek
_Hol
A törölni kívánt iterátorpozíció.
_Kezdődik
A törölni kívánt elemek tartományának első elemének pozíciója.
_Vég
Az első elem pozíciója a törölni kívánt elemek tartományán túl.
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 concurrent_unordered_map::end() 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 szabályozott sorozat elemét. A második tagfüggvény eltávolítja a tartomány elemeit [ _Begin, _End).
A harmadik tagfüggvény eltávolítja a concurrent_unordered_map::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