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.
Az concurrent_vector osztály egy szekvenciatároló-osztály, amely lehetővé teszi a véletlenszerű hozzáférést bármely elemhez. 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átoros 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.
Szemantika
template<typename T, class _Ax>
class concurrent_vector: protected details::_Allocator_base<T,
_Ax>,
private details::_Concurrent_vector_base_v4;
Paraméterek
T
A vektorban tárolandó elemek adattípusa.
_Fejsze
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 allocator<T>.
Tagok
Nyilvános typedefs
| Név | Leírás |
|---|---|
allocator_type |
Olyan típus, amely az egyidejű vektor kiosztóosztályát jelöli. |
const_iterator |
Olyan típus, amely véletlenszerű hozzáférésű iterátort biztosít, amely képes beolvasni egy const elemet egy egyidejű vektorban. |
const_pointer |
Olyan típus, amely egy egyidejű vektor egy const elemére mutató mutatót ad. |
const_reference |
Olyan típus, amely a műveletek olvasásához és végrehajtásához constconst egyidejű vektorban tárolt elemre mutató hivatkozást tartalmaz. |
const_reverse_iterator |
Olyan típus, amely véletlenszerű hozzáférésű iterátort biztosít, amely képes beolvasni az egyidejű vektor bármely const elemét. |
difference_type |
Olyan típus, amely egy egyidejű vektor két eleme közötti aláírt távolságot biztosítja. |
iterator |
Olyan típus, amely véletlenszerű hozzáférésű iterátort biztosít, amely képes beolvasni egy egyidejű vektor bármely elemét. Egy elem iterátor használatával történő módosítása nem egyidejűségbiztos. |
pointer |
Olyan típus, amely mutatót ad egy egyidejű vektor egy eleméhez. |
reference |
Olyan típus, amely egy egyidejű vektorban tárolt elemre mutató hivatkozást tartalmaz. |
reverse_iterator |
Olyan típus, amely véletlenszerű hozzáférésű iterátort biztosít, amely képes beolvasni egy fordított egyidejű vektor bármely elemét. Egy elem iterátor használatával történő módosítása nem egyidejűségbiztos. |
size_type |
Olyan típus, amely megszámolja az egyidejű vektor elemeinek számát. |
value_type |
Olyan típus, amely az egyidejű vektorban tárolt adattípust jelöli. |
Nyilvános konstruktorok
| Név | Leírás |
|---|---|
| concurrent_vector | Túlterhelt. Egyidejű vektort hoz létre. |
| ~concurrent_vector destruktor | Törli az összes elemet, és elpusztítja ezt az egyidejű vektort. |
Nyilvános metódusok
| Név | Leírás |
|---|---|
| átruház | Túlterhelt. Törli az egyidejű vektor elemeit, és hozzá _N rendeli az iterátortartomány _Item[ , _Begináltal megadott értékek másolatait _Endvagy értékeit). Ez a módszer nem egyidejűségbiztos. |
Túlterhelt. Hozzáférést biztosít az adott index eleméhez az egyidejű vektorban. Ez a módszer egyidejűleg biztonságos az olvasási műveletekhez, valamint a vektor növekedéséhez is, amennyiben biztosította, hogy az érték _Index kisebb legyen, mint az egyidejű vektor mérete. |
|
| hát | Túlterhelt. Az egyidejű vektor utolsó elemére mutató hivatkozást vagy const hivatkozást ad vissza. Ha az egyidejű vektor üres, a visszatérési érték nincs definiálva. Ez a módszer egyidejűség-biztonságos. |
| kezdődik | Túlterhelt. Egy típus iterator vagy const_iterator az egyidejű vektor elejére vonatkozó iterátort ad vissza. Ez a módszer egyidejűség-biztonságos. |
| kapacitás | Azt a maximális méretet adja vissza, amelyre az egyidejű vektor több memória lefoglalása nélkül növekedhet. Ez a módszer egyidejűség-biztonságos. |
| cbegin | Egy olyan iterátort const_iterator ad vissza, amely az egyidejű vektor elejére esik. Ez a módszer egyidejűség-biztonságos. |
| cend | Az egyidejű vektor végéhez tartozó típusú const_iterator iterátort ad vissza. Ez a módszer egyidejűség-biztonságos. |
| töröl | Törli az egyidejű vektor összes elemét. Ez a módszer nem egyidejűségbiztos. |
| crbegin | Egy olyan iterátort const_reverse_iterator ad vissza, amely az egyidejű vektor elejére esik. Ez a módszer egyidejűség-biztonságos. |
| crend | Az egyidejű vektor végéhez tartozó típusú const_reverse_iterator iterátort ad vissza. Ez a módszer egyidejűség-biztonságos. |
| üres | Ellenőrzi, hogy az egyidejű vektor üres-e a metódus meghívásának időpontjában. Ez a módszer egyidejűség-biztonságos. |
| vég | Túlterhelt. Egy típus iterator vagy const_iterator az egyidejű vektor végéhez tartozó iterátort ad vissza. Ez a módszer egyidejűség-biztonságos. |
| eleje | Túlterhelt. Az egyidejű vektor első elemére mutató hivatkozást vagy const hivatkozást ad vissza. Ha az egyidejű vektor üres, a visszatérési érték nincs definiálva. Ez a módszer egyidejűség-biztonságos. |
| get_allocator | Az egyidejű vektor létrehozásához használt kiosztó másolatát adja vissza. Ez a módszer egyidejűség-biztonságos. |
| grow_by | Túlterhelt. Ezt az egyidejű vektort elemek szerint _Delta növeli. Ez a módszer egyidejűség-biztonságos. |
| grow_to_at_least | Addig növeszti ezt az egyidejű vektort, amíg legalább _N elemekkel nem rendelkezik. Ez a módszer egyidejűség-biztonságos. |
| max_size | Az egyidejű vektor által tartható elemek maximális számát adja vissza. Ez a módszer egyidejűség-biztonságos. |
| push_back | Túlterhelt. Hozzáfűzi az adott elemet az egyidejű vektor végéhez. Ez a módszer egyidejűség-biztonságos. |
| rbegin | Túlterhelt. Egy típus reverse_iterator vagy const_reverse_iterator az egyidejű vektor elejére vonatkozó iterátort ad vissza. Ez a módszer egyidejűség-biztonságos. |
| szaggat | Túlterhelt. Egy típus reverse_iterator vagy const_reverse_iterator az egyidejű vektor végéhez tartozó iterátort ad vissza. Ez a módszer egyidejűség-biztonságos. |
| tartalék | Elegendő helyet foglal le az egyidejű vektor méretének _N növeléséhez anélkül, hogy később több memóriát kellene lefoglalnia. Ez a módszer nem egyidejűségbiztos. |
| átméretezése | Túlterhelt. Az egyidejű vektor méretét a kért méretre módosítja, szükség esetén törli vagy hozzáadja az elemeket. Ez a módszer nem egyidejűségbiztos. |
| shrink_to_fit | Tömöríti az egyidejű vektor belső ábrázolását a töredezettség csökkentése és a memóriahasználat optimalizálása érdekében. Ez a módszer nem egyidejűségbiztos. |
| méret | Az egyidejű vektor elemeinek számát adja vissza. Ez a módszer egyidejűség-biztonságos. |
| felcserélési | Két egyidejű vektor tartalmának felcserélése. Ez a módszer nem egyidejűségbiztos. |
Nyilvános operátorok
| Név | Leírás |
|---|---|
| operátor[] | Túlterhelt. Hozzáférést biztosít az adott index eleméhez az egyidejű vektorban. Ez a módszer egyidejűleg biztonságos az olvasási műveletekhez, valamint a vektor növekedéséhez is, mindaddig, amíg meggyőződik arról, hogy az érték _Index kisebb, mint az egyidejű vektor mérete. |
| operátor= | Túlterhelt. Egy másik concurrent_vector objektum tartalmát rendeli hozzá ehhez. Ez a módszer nem egyidejűségbiztos. |
Megjegyzések
A concurrent_vector 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
_Concurrent_vector_base_v4
_Allocator_base
concurrent_vector
Követelmények
Fejléc: concurrent_vector.h
névtér: egyidejűség
kijelöl
Törli az egyidejű vektor elemeit, és hozzá _N rendeli az iterátortartomány _Item[ , _Begináltal megadott értékek másolatait _Endvagy értékeit). Ez a módszer nem egyidejűségbiztos.
void assign(
size_type _N,
const_reference _Item);
template<class _InputIterator>
void assign(_InputIterator _Begin,
_InputIterator _End);
Paraméterek
_InputIterator
A megadott iterátor típusa.
_N
Az egyidejű vektorba másolandó elemek száma.
_Cikk
Hivatkozás az egyidejű vektor kitöltéséhez használt értékre.
_Kezdődik
A forrástartomány első elemének iterátora.
_Vég
Egy iterátor a forrástartomány utolsó elemétől egy másikig.
Megjegyzések
assign nem egyidejűségbiztos. A metódus meghívásakor győződjön meg arról, hogy más szálak nem invokáltanak metódusokat az egyidejű vektoron.
nél
Hozzáférést biztosít az adott index eleméhez az egyidejű vektorban. Ez a módszer egyidejűleg biztonságos az olvasási műveletekhez, valamint a vektor növekedéséhez is, amennyiben biztosította, hogy az érték _Index kisebb legyen, mint az egyidejű vektor mérete.
reference at(size_type _Index);
const_reference at(size_type _Index) const;
Paraméterek
_Index
A lekérendő elem indexe.
Visszaadott érték
Hivatkozás az adott indexben lévő elemre.
Megjegyzések
A függvény at nem hivatkozással const visszaadott verziója nem használható egyidejű írásra az elemhez különböző szálakból. Az egyidejű olvasási és írási műveleteket egy másik szinkronizálási objektummal kell szinkronizálni ugyanarra az adatelemre.
A metódus akkor dob, out_of_range ha _Index nagyobb vagy egyenlő az egyidejű vektor méretével, és range_error ha az index a vektor egy hibás részét tartalmazza. A vektorok hibássá válásának részleteiért lásd a párhuzamos tárolókat és objektumokat.
vissza
Az egyidejű vektor utolsó elemére mutató hivatkozást vagy const hivatkozást ad vissza. Ha az egyidejű vektor üres, a visszatérési érték nincs definiálva. Ez a módszer egyidejűség-biztonságos.
reference back();
const_reference back() const;
Visszaadott érték
Hivatkozás vagy const hivatkozás az egyidejű vektor utolsó elemére.
kezdődik
Egy típus iterator vagy const_iterator az egyidejű vektor elejére vonatkozó iterátort ad vissza. Ez a módszer egyidejűség-biztonságos.
iterator begin();
const_iterator begin() const;
Visszaadott érték
Az egyidejű vektor típusának iterator vagy const_iterator elejének iterátora.
kapacitás
Azt a maximális méretet adja vissza, amelyre az egyidejű vektor több memória lefoglalása nélkül növekedhet. Ez a módszer egyidejűség-biztonságos.
size_type capacity() const;
Visszaadott érték
Az a maximális méret, amelyre az egyidejű vektor növekedhet anélkül, hogy több memóriát kellene lefoglalnia.
Megjegyzések
A C++ standard kódtárakkal vectorellentétben az concurrent_vector objektumok nem helyezik át a meglévő elemeket, ha több memóriát foglalnak le.
cbegin
Egy olyan iterátort const_iterator ad vissza, amely az egyidejű vektor elejére esik. Ez a módszer egyidejűség-biztonságos.
const_iterator cbegin() const;
Visszaadott érték
Az egyidejű vektor elejéig tartó típusú const_iterator iterátor.
cend
Az egyidejű vektor végéhez tartozó típusú const_iterator iterátort ad vissza. Ez a módszer egyidejűség-biztonságos.
const_iterator cend() const;
Visszaadott érték
Az egyidejű vektor végéig tartó típusú const_iterator iterátor.
világos
Törli az egyidejű vektor összes elemét. Ez a módszer nem egyidejűségbiztos.
void clear();
Megjegyzések
clear nem egyidejűségbiztos. A metódus meghívásakor győződjön meg arról, hogy más szálak nem invokáltanak metódusokat az egyidejű vektoron.
clear nem szabadít fel belső tömböket. A belső tömbök felszabadításához hívja meg a függvényt shrink_to_fit a következő után clear: .
concurrent_vector
Egyidejű vektort hoz létre.
explicit concurrent_vector(
const allocator_type& _Al = allocator_type());
concurrent_vector(
const concurrent_vector& _Vector);
template<class M>
concurrent_vector(
const concurrent_vector<T,
M>& _Vector,
const allocator_type& _Al = allocator_type());
concurrent_vector(
concurrent_vector&& _Vector);
explicit concurrent_vector(
size_type _N);
concurrent_vector(
size_type _N,
const_reference _Item,
const allocator_type& _Al = allocator_type());
template<class _InputIterator>
concurrent_vector(_InputIterator _Begin,
_InputIterator _End,
const allocator_type& _Al = allocator_type());
Paraméterek
M
A forrásvektor kiosztótípusa.
_InputIterator
A bemeneti iterátor típusa.
_Al
Az objektumhoz használni kívánt kiosztóosztály.
_Vektor
A forrás concurrent_vector objektumot az elemek másolásához vagy áthelyezéséhez.
_N
Az objektum kezdeti kapacitása concurrent_vector .
_Cikk
A létrehozott objektum elemeinek értéke.
_Kezdődik
A másolandó elemek tartományának első elemének pozíciója.
_Vég
Az első elem elhelyezése a másolandó elemek tartományán túl.
Megjegyzések
Minden konstruktor tárol egy allokátorobjektumot _Al , és inicializálja a vektort.
Az első konstruktor egy üres kezdeti vektort ad meg, és explicit módon megadja az elosztó típusát. használandó.
A második és a harmadik konstruktor megadja az egyidejű vektor _Vectormásolatát.
A negyedik konstruktor az egyidejű vektor _Vectoráthelyezését adja meg.
Az ötödik konstruktor az osztály _Nalapértelmezett értékének elemeinek megadott számának (T) ismétlődését adja meg.
A hatodik konstruktor az érték _Nelemeinek ismétlődését_Item adja meg.
Az utolsó konstruktor az iterátortartomány által megadott értékeket adja meg [ _Begin, _End).
~concurrent_vector
Törli az összes elemet, és elpusztítja ezt az egyidejű vektort.
~concurrent_vector();
crbegin
Egy olyan iterátort const_reverse_iterator ad vissza, amely az egyidejű vektor elejére esik. Ez a módszer egyidejűség-biztonságos.
const_reverse_iterator crbegin() const;
Visszaadott érték
Az egyidejű vektor elejéig tartó típusú const_reverse_iterator iterátor.
crend
Az egyidejű vektor végéhez tartozó típusú const_reverse_iterator iterátort ad vissza. Ez a módszer egyidejűség-biztonságos.
const_reverse_iterator crend() const;
Visszaadott érték
Az egyidejű vektor végéig tartó típusú const_reverse_iterator iterátor.
üres
Ellenőrzi, hogy az egyidejű vektor üres-e a metódus meghívásának időpontjában. Ez a módszer egyidejűség-biztonságos.
bool empty() const;
Visszaadott érték
true ha a vektor üres volt a függvény meghívásának pillanatában, false ellenkező esetben.
vég
Egy típus iterator vagy const_iterator az egyidejű vektor végéhez tartozó iterátort ad vissza. Ez a módszer egyidejűség-biztonságos.
iterator end();
const_iterator end() const;
Visszaadott érték
Az egyidejű vektor típusának iterator vagy const_iterator végének iterátora.
eleje
Az egyidejű vektor első elemére mutató hivatkozást vagy const hivatkozást ad vissza. Ha az egyidejű vektor üres, a visszatérési érték nincs definiálva. Ez a módszer egyidejűség-biztonságos.
reference front();
const_reference front() const;
Visszaadott érték
Hivatkozás vagy const hivatkozás az egyidejű vektor első elemére.
get_allocator
Az egyidejű vektor létrehozásához használt kiosztó másolatát adja vissza. Ez a módszer egyidejűség-biztonságos.
allocator_type get_allocator() const;
Visszaadott érték
Az objektum létrehozásához használt kiosztó másolata concurrent_vector .
grow_by
Ezt az egyidejű vektort elemek szerint _Delta növeli. Ez a módszer egyidejűség-biztonságos.
iterator grow_by(
size_type _Delta);
iterator grow_by(
size_type _Delta,
const_reference _Item);
Paraméterek
_Delta
Az objektumhoz hozzáfűzendő elemek száma.
_Cikk
Az új elemek inicializálásának értéke.
Visszaadott érték
Az első hozzáfűzött elem iterátora.
Megjegyzések
Ha _Item nincs megadva, az új elemek alapértelmezés szerint létrejönnek.
grow_to_at_least
Addig növeszti ezt az egyidejű vektort, amíg legalább _N elemekkel nem rendelkezik. Ez a módszer egyidejűség-biztonságos.
iterator grow_to_at_least(size_type _N);
Paraméterek
_N
Az objektum új minimális mérete concurrent_vector .
Visszaadott érték
Egy iterátor, amely a hozzáfűzött sorozat elejére vagy az index _N elemére mutat, ha nem fűzött hozzá elemeket.
maximális méret
Az egyidejű vektor által tartható elemek maximális számát adja vissza. Ez a módszer egyidejűség-biztonságos.
size_type max_size() const;
Visszaadott érték
Az objektum által tartható elemek concurrent_vector maximális száma.
operátor=
Egy másik concurrent_vector objektum tartalmát rendeli hozzá ehhez. Ez a módszer nem egyidejűségbiztos.
concurrent_vector& operator= (
const concurrent_vector& _Vector);
template<class M>
concurrent_vector& operator= (
const concurrent_vector<T, M>& _Vector);
concurrent_vector& operator= (
concurrent_vector&& _Vector);
Paraméterek
M
A forrásvektor kiosztótípusa.
_Vektor
A forrás concurrent_vector objektum.
Visszaadott érték
Hivatkozás erre a concurrent_vector objektumra.
operátor[]
Hozzáférést biztosít az adott index eleméhez az egyidejű vektorban. Ez a módszer egyidejűleg biztonságos az olvasási műveletekhez, valamint a vektor növekedéséhez is, mindaddig, amíg meggyőződik arról, hogy az érték _Index kisebb, mint az egyidejű vektor mérete.
reference operator[](size_type _index);
const_reference operator[](size_type _index) const;
Paraméterek
_Index
A lekérendő elem indexe.
Visszaadott érték
Hivatkozás az adott indexben lévő elemre.
Megjegyzések
Ennek a verziónak operator [] a nem const hivatkozása nem használható arra, hogy egyszerre írjon az elemhez különböző szálakból. Az egyidejű olvasási és írási műveleteket egy másik szinkronizálási objektummal kell szinkronizálni ugyanarra az adatelemre.
Nem történik korlátellenőrzés annak biztosítása érdekében, hogy _Index érvényes index legyen az egyidejű vektorban.
push_back
Hozzáfűzi az adott elemet az egyidejű vektor végéhez. Ez a módszer egyidejűség-biztonságos.
iterator push_back(const_reference _Item);
iterator push_back(T&& _Item);
Paraméterek
_Cikk
A hozzáfűzendő érték.
Visszaadott érték
A hozzáfűzött elem iterátora.
rbegin
Egy típus reverse_iterator vagy const_reverse_iterator az egyidejű vektor elejére vonatkozó iterátort ad vissza. Ez a módszer egyidejűség-biztonságos.
reverse_iterator rbegin();
const_reverse_iterator rbegin() const;
Visszaadott érték
Az egyidejű vektor típusának reverse_iterator vagy const_reverse_iterator elejének iterátora.
szaggat
Egy típus reverse_iterator vagy const_reverse_iterator az egyidejű vektor végéhez tartozó iterátort ad vissza. Ez a módszer egyidejűség-biztonságos.
reverse_iterator rend();
const_reverse_iterator rend() const;
Visszaadott érték
Az egyidejű vektor típusának reverse_iterator vagy const_reverse_iterator végének iterátora.
tartalék
Elegendő helyet foglal le az egyidejű vektor méretének _N növeléséhez anélkül, hogy később több memóriát kellene lefoglalnia. Ez a módszer nem egyidejűségbiztos.
void reserve(size_type _N);
Paraméterek
_N
A helyet lefoglalni kívánt elemek száma.
Megjegyzések
reserve nem egyidejűségbiztos. A metódus meghívásakor győződjön meg arról, hogy más szálak nem invokáltanak metódusokat az egyidejű vektoron. A metódus visszatérése után az egyidejű vektor kapacitása nagyobb lehet, mint a kért foglalás.
átméretezés
Az egyidejű vektor méretét a kért méretre módosítja, szükség esetén törli vagy hozzáadja az elemeket. Ez a módszer nem egyidejűségbiztos.
void resize(
size_type _N);
void resize(
size_type _N,
const T& val);
Paraméterek
_N
A concurrent_vector új mérete.
val
A vektorhoz hozzáadott új elemek értéke, ha az új méret nagyobb az eredeti méretnél. Ha az érték nincs megadva, az új objektumok a típusuk alapértelmezett értékéhez lesznek hozzárendelve.
Megjegyzések
Ha a tároló mérete kisebb a kért méretnél, a rendszer addig ad hozzá elemeket a vektorhoz, amíg el nem éri a kért méretet. Ha a tároló mérete nagyobb a kért méretnél, a tároló végéhez legközelebbi elemeket a rendszer törli, amíg a tároló eléri a méretet _N. Ha a tároló jelenlegi mérete megegyezik a kért méretével, a rendszer nem hajt végre műveletet.
resize nem biztonságos az egyidejűség. A metódus meghívásakor győződjön meg arról, hogy más szálak nem invokáltanak metódusokat az egyidejű vektoron.
shrink_to_fit
Tömöríti az egyidejű vektor belső ábrázolását a töredezettség csökkentése és a memóriahasználat optimalizálása érdekében. Ez a módszer nem egyidejűségbiztos.
void shrink_to_fit();
Megjegyzések
Ez a metódus belsőleg újra lefoglalja a memória áthelyezési elemeit, érvényteleníti az összes iterátort.
shrink_to_fit nem egyidejűségbiztos. Győződjön meg arról, hogy más szálak nem invokáltanak metódusokat az egyidejű vektoron, amikor ezt a függvényt meghívja.
méret
Az egyidejű vektor elemeinek számát adja vissza. Ez a módszer egyidejűség-biztonságos.
size_type size() const;
Visszaadott érték
Az objektum elemeinek concurrent_vector száma.
Megjegyzések
A visszaadott méret garantáltan tartalmazza a függvény push_backhívásai által hozzáfűzött összes elemet, vagy a metódus meghívása előtt befejezett műveletek növelését. Tartalmazhat azonban olyan elemeket is, amelyeket kiosztanak, de még fejlesztés alatt állnak a növekedési módszerek bármelyikének egyidejű hívásával.
elcserél
Két egyidejű vektor tartalmának felcserélése. Ez a módszer nem egyidejűségbiztos.
void swap(concurrent_vector& _Vector);
Paraméterek
_Vektor
Az concurrent_vector objektum, amellyel felcserélheti a tartalmat.
Lásd még
egyidejű névtér
párhuzamos tárolók és objektumok