Dela via


concurrent_vector-klass

Klassen concurrent_vector är en sekvenscontainerklass som ger slumpmässig åtkomst till alla element. Det möjliggör samtidighetssäker tillägg, elementåtkomst, iteratoråtkomst och iterator-bläddringar. Här innebär samtidighetssäkert att pekare eller iteratorer alltid är giltiga. Det är inte en garanti för elementinitiering eller en viss bläddreringsordning.

Syntax

template<typename T, class _Ax>
class concurrent_vector: protected details::_Allocator_base<T,
    _Ax>,
private details::_Concurrent_vector_base_v4;

Parameterar

T
Datatypen för de element som ska lagras i vektorn.

_Yxa
Den typ som representerar det lagrade allokeringsobjektet som kapslar in information om allokering och frigöring av minne för den samtidiga vektorn. Det här argumentet är valfritt och standardvärdet är allocator<T>.

Medlemmar

Offentliga typedefs

Namn Beskrivning
allocator_type En typ som representerar allokeringsklassen för den samtidiga vektorn.
const_iterator En typ som ger en iterator med slumpmässig åtkomst som kan läsa ett const element i en samtidig vektor.
const_pointer En typ som ger en pekare till ett const element i en samtidig vektor.
const_reference En typ som ger en referens till ett const element som lagras i en samtidig vektor för att läsa och utföra const åtgärder.
const_reverse_iterator En typ som ger en iterator med slumpmässig åtkomst som kan läsa alla const element i den samtidiga vektorn.
difference_type En typ som ger det signerade avståndet mellan två element i en samtidig vektor.
iterator En typ som ger en iterator med slumpmässig åtkomst som kan läsa alla element i en samtidig vektor. En ändring av ett element med iteratorn är inte samtidighetssäker.
pointer En typ som ger en pekare till ett element i en samtidig vektor.
reference En typ som ger en referens till ett element som lagras i en samtidig vektor.
reverse_iterator En typ som ger en iterator med slumpmässig åtkomst som kan läsa alla element i en omvänd samtidig vektor. En ändring av ett element med iteratorn är inte samtidighetssäker.
size_type En typ som räknar antalet element i en samtidig vektor.
value_type En typ som representerar datatypen som lagras i en samtidig vektor.

Offentliga konstruktorer

Namn Beskrivning
concurrent_vector Överbelastad. Konstruerar en samtidig vektor.
~concurrent_vector Destructor Raderar alla element och förstör den här samtidiga vektorn.

Offentliga metoder

Namn Beskrivning
tilldela Överbelastad. Raderar elementen i den samtidiga vektorn och tilldelar den antingen _N kopior av _Itemeller värden som anges av iteratorintervallet [ _Begin, _End). Den här metoden är inte samtidighetssäker.
Överbelastad. Ger åtkomst till elementet i det angivna indexet i den samtidiga vektorn. Den här metoden är samtidighetssäker för läsåtgärder, och även när vektorn växer, så länge du har sett till att värdet _Index är mindre än storleken på den samtidiga vektorn.
tillbaka Överbelastad. Returnerar en referens eller en const referens till det sista elementet i den samtidiga vektorn. Om den samtidiga vektorn är tom är returvärdet odefinierat. Den här metoden är samtidighetssäker.
börja Överbelastad. Returnerar en iterator av typen iterator eller const_iterator till början av den samtidiga vektorn. Den här metoden är samtidighetssäker.
kapacitet Returnerar den maximala storlek som den samtidiga vektorn kan växa till utan att behöva allokera mer minne. Den här metoden är samtidighetssäker.
cbegin Returnerar en iterator av typen const_iterator till början av den samtidiga vektorn. Den här metoden är samtidighetssäker.
cend Returnerar en iterator av typen const_iterator till slutet av den samtidiga vektorn. Den här metoden är samtidighetssäker.
klar Raderar alla element i den samtidiga vektorn. Den här metoden är inte samtidighetssäker.
crbegin Returnerar en iterator av typen const_reverse_iterator till början av den samtidiga vektorn. Den här metoden är samtidighetssäker.
crend Returnerar en iterator av typen const_reverse_iterator till slutet av den samtidiga vektorn. Den här metoden är samtidighetssäker.
tom Testar om den samtidiga vektorn är tom när den här metoden anropas. Den här metoden är samtidighetssäker.
ände Överbelastad. Returnerar en iterator av typen iterator eller const_iterator till slutet av den samtidiga vektorn. Den här metoden är samtidighetssäker.
framsida Överbelastad. Returnerar en referens eller en const referens till det första elementet i den samtidiga vektorn. Om den samtidiga vektorn är tom är returvärdet odefinierat. Den här metoden är samtidighetssäker.
get_allocator Returnerar en kopia av allokeraren som används för att konstruera den samtidiga vektorn. Den här metoden är samtidighetssäker.
grow_by Överbelastad. Växer den här samtidiga vektorn efter _Delta element. Den här metoden är samtidighetssäker.
grow_to_at_least Växer den här samtidiga vektorn tills den har minst _N element. Den här metoden är samtidighetssäker.
max_size Returnerar det maximala antalet element som den samtidiga vektorn kan innehålla. Den här metoden är samtidighetssäker.
push_back Överbelastad. Lägger till det angivna objektet i slutet av den samtidiga vektorn. Den här metoden är samtidighetssäker.
rbegin Överbelastad. Returnerar en iterator av typen reverse_iterator eller const_reverse_iterator till början av den samtidiga vektorn. Den här metoden är samtidighetssäker.
rend Överbelastad. Returnerar en iterator av typen reverse_iterator eller const_reverse_iterator till slutet av den samtidiga vektorn. Den här metoden är samtidighetssäker.
reservera Allokerar tillräckligt med utrymme för att öka den samtidiga vektorn till storlek _N utan att behöva allokera mer minne senare. Den här metoden är inte samtidighetssäker.
ändra storlek på Överbelastad. Ändrar storleken på den samtidiga vektorn till den begärda storleken, tar bort eller lägger till element efter behov. Den här metoden är inte samtidighetssäker.
shrink_to_fit Komprimerar den interna representationen av den samtidiga vektorn för att minska fragmenteringen och optimera minnesanvändningen. Den här metoden är inte samtidighetssäker.
storlek Returnerar antalet element i den samtidiga vektorn. Den här metoden är samtidighetssäker.
växla Växlar innehållet i två samtidiga vektorer. Den här metoden är inte samtidighetssäker.

Offentliga operatörer

Namn Beskrivning
operatorn[] Överbelastad. Ger åtkomst till elementet i det angivna indexet i den samtidiga vektorn. Den här metoden är samtidighetssäker för läsåtgärder, och även när vektorn växer, så länge du har sett till att värdet _Index är mindre än storleken på den samtidiga vektorn.
operator= Överbelastad. Tilldelar innehållet i ett annat concurrent_vector objekt till det här objektet. Den här metoden är inte samtidighetssäker.

Anmärkningar

Detaljerad information om klassen concurrent_vector finns i Parallella containrar och objekt.

Arvshierarki

_Concurrent_vector_base_v4

_Allocator_base

concurrent_vector

Kravspecifikation

Rubrik: concurrent_vector.h

namnområde: samtidighet

tilldela

Raderar elementen i den samtidiga vektorn och tilldelar den antingen _N kopior av _Itemeller värden som anges av iteratorintervallet [ _Begin, _End). Den här metoden är inte samtidighetssäker.

void assign(
    size_type _N,
    const_reference _Item);

template<class _InputIterator>
void assign(_InputIterator _Begin,
    _InputIterator _End);

Parameterar

_InputIterator
Typ av angiven iterator.

_N
Antalet objekt som ska kopieras till den samtidiga vektorn.

_Sak
Referens till ett värde som används för att fylla den samtidiga vektorn.

_Börja
En iterator till det första elementet i källintervallet.

_Ände
En iterator till en förbi det sista elementet i källintervallet.

Anmärkningar

assign är inte samtidighetssäkert. Du måste se till att inga andra trådar anropar metoder på den samtidiga vektorn när du anropar den här metoden.

Ger åtkomst till elementet i det angivna indexet i den samtidiga vektorn. Den här metoden är samtidighetssäker för läsåtgärder, och även när vektorn växer, så länge du har sett till att värdet _Index är mindre än storleken på den samtidiga vektorn.

reference at(size_type _Index);

const_reference at(size_type _Index) const;

Parameterar

_Index
Indexet för det element som ska hämtas.

Returvärde

En referens till objektet i det angivna indexet.

Anmärkningar

Den version av funktionen at som returnerar en icke-referens const kan inte användas för att samtidigt skriva till elementet från olika trådar. Ett annat synkroniseringsobjekt ska användas för att synkronisera samtidiga läs- och skrivåtgärder till samma dataelement.

Metoden genererar out_of_range om _Index är större än eller lika med storleken på den samtidiga vektorn och range_error om indexet är för en bruten del av vektorn. Mer information om hur en vektor kan brytas finns i Parallella containrar och objekt.

tillbaka

Returnerar en referens eller en const referens till det sista elementet i den samtidiga vektorn. Om den samtidiga vektorn är tom är returvärdet odefinierat. Den här metoden är samtidighetssäker.

reference back();

const_reference back() const;

Returvärde

En referens eller en const referens till det sista elementet i den samtidiga vektorn.

börja

Returnerar en iterator av typen iterator eller const_iterator till början av den samtidiga vektorn. Den här metoden är samtidighetssäker.

iterator begin();

const_iterator begin() const;

Returvärde

En iterator av typen iterator eller const_iterator till början av den samtidiga vektorn.

kapacitet

Returnerar den maximala storlek som den samtidiga vektorn kan växa till utan att behöva allokera mer minne. Den här metoden är samtidighetssäker.

size_type capacity() const;

Returvärde

Den maximala storleken som den samtidiga vektorn kan växa till utan att behöva allokera mer minne.

Anmärkningar

Till skillnad från ett C++-standardbibliotek vectorflyttar ett concurrent_vector objekt inte befintliga element om det allokerar mer minne.

cbegin

Returnerar en iterator av typen const_iterator till början av den samtidiga vektorn. Den här metoden är samtidighetssäker.

const_iterator cbegin() const;

Returvärde

En iterator av typen const_iterator till början av den samtidiga vektorn.

cend

Returnerar en iterator av typen const_iterator till slutet av den samtidiga vektorn. Den här metoden är samtidighetssäker.

const_iterator cend() const;

Returvärde

En iterator av typen const_iterator till slutet av den samtidiga vektorn.

klar

Raderar alla element i den samtidiga vektorn. Den här metoden är inte samtidighetssäker.

void clear();

Anmärkningar

clear är inte samtidighetssäkert. Du måste se till att inga andra trådar anropar metoder på den samtidiga vektorn när du anropar den här metoden. clear frigör inte interna matriser. Om du vill frigöra interna matriser anropar du funktionen shrink_to_fit efter clear.

concurrent_vector

Konstruerar en samtidig vektor.

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());

Parameterar

M
Källvektorns allokeringstyp.

_InputIterator
Typ av iterator för indata.

_Al
Allokeringsklassen som ska användas med det här objektet.

_Vektor
Källan concurrent_vector objekt att kopiera eller flytta element från.

_N
Objektets concurrent_vector ursprungliga kapacitet.

_Sak
Värdet för element i det konstruerade objektet.

_Börja
Positionen för det första elementet i området med element som ska kopieras.

_Ände
Positionen för det första elementet utanför det område med element som ska kopieras.

Anmärkningar

Alla konstruktorer lagrar ett allokeringsobjekt _Al och initierar vektorn.

Den första konstruktorn anger en tom inledande vektor och anger uttryckligen allokeringstypen. som ska användas.

Den andra och tredje konstruktorn anger en kopia av den samtidiga vektorn _Vector.

Den fjärde konstruktorn anger en flytt av den samtidiga vektorn _Vector.

Den femte konstruktorn anger en upprepning av ett angivet antal (_N) element i standardvärdet för klassen T.

Den sjätte konstruktorn anger en upprepning av (_N) element av värdet _Item.

Den sista konstruktorn anger värden som tillhandahålls av iteratorintervallet [ _Begin, _End).

~concurrent_vector

Raderar alla element och förstör den här samtidiga vektorn.

~concurrent_vector();

crbegin

Returnerar en iterator av typen const_reverse_iterator till början av den samtidiga vektorn. Den här metoden är samtidighetssäker.

const_reverse_iterator crbegin() const;

Returvärde

En iterator av typen const_reverse_iterator till början av den samtidiga vektorn.

crend

Returnerar en iterator av typen const_reverse_iterator till slutet av den samtidiga vektorn. Den här metoden är samtidighetssäker.

const_reverse_iterator crend() const;

Returvärde

En iterator av typen const_reverse_iterator till slutet av den samtidiga vektorn.

tom

Testar om den samtidiga vektorn är tom när den här metoden anropas. Den här metoden är samtidighetssäker.

bool empty() const;

Returvärde

true om vektorn var tom vid den tidpunkt då funktionen anropades, false annars.

ände

Returnerar en iterator av typen iterator eller const_iterator till slutet av den samtidiga vektorn. Den här metoden är samtidighetssäker.

iterator end();

const_iterator end() const;

Returvärde

En iterator av typen iterator eller const_iterator till slutet av den samtidiga vektorn.

framsida

Returnerar en referens eller en const referens till det första elementet i den samtidiga vektorn. Om den samtidiga vektorn är tom är returvärdet odefinierat. Den här metoden är samtidighetssäker.

reference front();

const_reference front() const;

Returvärde

En referens eller en const referens till det första elementet i den samtidiga vektorn.

get_allocator

Returnerar en kopia av allokeraren som används för att konstruera den samtidiga vektorn. Den här metoden är samtidighetssäker.

allocator_type get_allocator() const;

Returvärde

En kopia av allokeraren som används för att konstruera concurrent_vector objektet.

grow_by

Växer den här samtidiga vektorn efter _Delta element. Den här metoden är samtidighetssäker.

iterator grow_by(
    size_type _Delta);

iterator grow_by(
    size_type _Delta,
    const_reference _Item);

Parameterar

_Delta
Antalet element som ska läggas till i objektet.

_Sak
Värdet som de nya elementen ska initieras med.

Returvärde

En iterator för det första objektet som läggs till.

Anmärkningar

Om _Item inte anges skapas de nya elementen som standard.

grow_to_at_least

Växer den här samtidiga vektorn tills den har minst _N element. Den här metoden är samtidighetssäker.

iterator grow_to_at_least(size_type _N);

Parameterar

_N
Den nya minsta storleken för concurrent_vector objektet.

Returvärde

En iterator som pekar på början av den bifogade sekvensen eller till elementet vid indexet _N om inga element lades till.

maxstorlek

Returnerar det maximala antalet element som den samtidiga vektorn kan innehålla. Den här metoden är samtidighetssäker.

size_type max_size() const;

Returvärde

Det maximala antalet element som concurrent_vector objektet kan innehålla.

operator=

Tilldelar innehållet i ett annat concurrent_vector objekt till det här objektet. Den här metoden är inte samtidighetssäker.

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);

Parameterar

M
Källvektorns allokeringstyp.

_Vektor
Källobjektet concurrent_vector.

Returvärde

En referens till det här concurrent_vector objektet.

operator[]

Ger åtkomst till elementet i det angivna indexet i den samtidiga vektorn. Den här metoden är samtidighetssäker för läsåtgärder, och även när vektorn växer, så länge du har sett till att värdet _Index är mindre än storleken på den samtidiga vektorn.

reference operator[](size_type _index);

const_reference operator[](size_type _index) const;

Parameterar

_Index
Indexet för det element som ska hämtas.

Returvärde

En referens till objektet i det angivna indexet.

Anmärkningar

Den version av operator [] som returnerar en icke-referens const kan inte användas för att samtidigt skriva till elementet från olika trådar. Ett annat synkroniseringsobjekt ska användas för att synkronisera samtidiga läs- och skrivåtgärder till samma dataelement.

Ingen gränskontroll utförs för att säkerställa att det _Index är ett giltigt index i den samtidiga vektorn.

push_back

Lägger till det angivna objektet i slutet av den samtidiga vektorn. Den här metoden är samtidighetssäker.

iterator push_back(const_reference _Item);

iterator push_back(T&& _Item);

Parameterar

_Sak
Värdet som ska läggas till.

Returvärde

En iterator för objekt som läggs till.

rbegin

Returnerar en iterator av typen reverse_iterator eller const_reverse_iterator till början av den samtidiga vektorn. Den här metoden är samtidighetssäker.

reverse_iterator rbegin();

const_reverse_iterator rbegin() const;

Returvärde

En iterator av typen reverse_iterator eller const_reverse_iterator till början av den samtidiga vektorn.

rend

Returnerar en iterator av typen reverse_iterator eller const_reverse_iterator till slutet av den samtidiga vektorn. Den här metoden är samtidighetssäker.

reverse_iterator rend();

const_reverse_iterator rend() const;

Returvärde

En iterator av typen reverse_iterator eller const_reverse_iterator till slutet av den samtidiga vektorn.

förbehålla

Allokerar tillräckligt med utrymme för att öka den samtidiga vektorn till storlek _N utan att behöva allokera mer minne senare. Den här metoden är inte samtidighetssäker.

void reserve(size_type _N);

Parameterar

_N
Antalet element att reservera utrymme för.

Anmärkningar

reserve är inte samtidighetssäkert. Du måste se till att inga andra trådar anropar metoder på den samtidiga vektorn när du anropar den här metoden. Kapaciteten för den samtidiga vektorn efter att metoden returnerar kan vara större än den begärda reservationen.

ändra storlek

Ändrar storleken på den samtidiga vektorn till den begärda storleken, tar bort eller lägger till element efter behov. Den här metoden är inte samtidighetssäker.

void resize(
    size_type _N);

void resize(
    size_type _N,
    const T& val);

Parameterar

_N
Den nya storleken på concurrent_vector.

val
Värdet för nya element som läggs till i vektorn om den nya storleken är större än den ursprungliga storleken. Om värdet utelämnas tilldelas de nya objekten standardvärdet för sin typ.

Anmärkningar

Om containerns storlek är mindre än den begärda storleken läggs elementen till i vektorn tills den når den begärda storleken. Om containerns storlek är större än den begärda storleken tas de element som är närmast containerns ände bort tills containern når storleken _N. Om containerns nuvarande storlek är samma som den begärda storleken vidtas ingen åtgärd.

resize är inte samtidighetssäker. Du måste se till att inga andra trådar anropar metoder på den samtidiga vektorn när du anropar den här metoden.

shrink_to_fit

Komprimerar den interna representationen av den samtidiga vektorn för att minska fragmenteringen och optimera minnesanvändningen. Den här metoden är inte samtidighetssäker.

void shrink_to_fit();

Anmärkningar

Den här metoden kommer att omallokera minnesflyttelement internt, vilket gör alla iteratorer ogiltiga. shrink_to_fit är inte samtidighetssäkert. Du måste se till att inga andra trådar anropar metoder på den samtidiga vektorn när du anropar den här funktionen.

storlek

Returnerar antalet element i den samtidiga vektorn. Den här metoden är samtidighetssäker.

size_type size() const;

Returvärde

Antalet element i det här concurrent_vector objektet.

Anmärkningar

Den returnerade storleken är garanterad att inkludera alla element som läggs till av anrop till funktionen push_backeller utöka åtgärder som har slutförts innan den här metoden anropas. Den kan dock även omfatta element som allokeras men fortfarande håller på att byggas upp av samtidiga anrop till någon av tillväxtmetoderna.

byta

Växlar innehållet i två samtidiga vektorer. Den här metoden är inte samtidighetssäker.

void swap(concurrent_vector& _Vector);

Parameterar

_Vektor
Objektet concurrent_vector som ska växlas innehåll med.

Se även

samtidighetsnamnområde
parallella containrar och objekt