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


concurrent_vector osztály

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