Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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 _Item eller värden som anges av iteratorintervallet [ _Begin , _End ). Den här metoden är inte samtidighetssäker. |
på | Ö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 _Item
eller 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.
på
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 vector
flyttar 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_back
eller 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.