Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
De concurrent_vector klasse is een reekscontainerklasse die willekeurige toegang tot elk element toestaat. Het maakt gelijktijdigheidsveilige toevoeg-, elementtoegang, iterator-toegang en iterator-doorkruisingsbewerkingen mogelijk. Hier zijn gelijktijdigheidsveilige aanwijzers of iterators altijd geldig. Het biedt geen garantie voor het initialiseren van elementen of voor een specifieke traverseringsvolgorde.
Syntaxis
template<typename T, class _Ax>
class concurrent_vector: protected details::_Allocator_base<T,
_Ax>,
private details::_Concurrent_vector_base_v4;
Parameterwaarden
T
Het gegevenstype van de elementen die in de vector moeten worden opgeslagen.
_Ax
Het type dat het opgeslagen toewijzingsobject vertegenwoordigt, dat details bevat over de toewijzing en vrijgave van het geheugen voor de concurrente vector. Dit argument is optioneel en de standaardwaarde is allocator<T>.
Leden
Openbare typedefs
| Naam | Beschrijving |
|---|---|
allocator_type |
Een type dat de allocatorklasse vertegenwoordigt voor de gelijktijdige vector. |
const_iterator |
Een type dat een iterator voor willekeurige toegang biedt die een const element in een gelijktijdige vector kan lezen. |
const_pointer |
Een type dat een aanwijzer naar een const element in een gelijktijdige vector aanwijst. |
const_reference |
Een type dat een verwijzing biedt naar een const element dat is opgeslagen in een gelijktijdige vector voor het lezen en uitvoeren van bewerkingen const . |
const_reverse_iterator |
Een type dat een iterator voor willekeurige toegang biedt die elk const element in de gelijktijdige vector kan lezen. |
difference_type |
Een type dat de getekende afstand tussen twee elementen in een concurrente vector bepaalt. |
iterator |
Een type dat een iterator voor willekeurige toegang biedt die elk element in een gelijktijdige vector kan lezen. Wijziging van een element met behulp van de iterator is niet gelijktijdigheidsveilig. |
pointer |
Een type dat een aanwijzer biedt naar een element in een gelijktijdige vector. |
reference |
Een type dat een verwijzing biedt naar een element dat is opgeslagen in een gelijktijdige vector. |
reverse_iterator |
Een type dat een iterator voor willekeurige toegang biedt die elk element in een omgekeerde gelijktijdige vector kan lezen. Wijziging van een element met behulp van de iterator is niet gelijktijdigheidsveilig. |
size_type |
Een type dat het aantal elementen in een gelijktijdige vector telt. |
value_type |
Een type dat het gegevenstype vertegenwoordigt dat is opgeslagen in een gelijktijdige vector. |
Openbare constructors
| Naam | Beschrijving |
|---|---|
| concurrent_vector | Overbelast. Maakt een concurrerende vector. |
| ~concurrent_vector Destructor | Alle elementen wissen en deze gelijktijdige vector vernietigen. |
Openbare methoden
| Naam | Beschrijving |
|---|---|
| toewijzen | Overbelast. Hiermee wist u de elementen van de gelijktijdige vector en wijst het toe aan _N kopieën van _Item, of aan waarden die zijn opgegeven door het iteratorbereik [ _Begin, _End). Deze methode is niet gelijktijdigheidsveilig. |
| op | Overbelast. Biedt toegang tot het element op de opgegeven index in de gelijktijdige vector. Deze methode is gelijktijdigheidsveilig voor leesbewerkingen en ook tijdens het vergroten van de vector, zolang u ervoor hebt gezorgd dat de waarde _Index kleiner is dan de grootte van de gelijktijdige vector. |
| Terug | Overbelast. Retourneert een verwijzing of een const verwijzing naar het laatste element in de gelijktijdige vector. Als de gelijktijdige vector leeg is, is de retourwaarde niet gedefinieerd. Deze methode is gelijktijdigheidsveilig. |
| beginnen | Overbelast. Retourneert een iterator van het type iterator of const_iterator aan het begin van de gelijktijdige vector. Deze methode is gelijktijdigheidsveilig. |
| capaciteit | Retourneert de maximale grootte waarop de gelijktijdige vector kan groeien zonder dat er meer geheugen hoeft te worden toegewezen. Deze methode is gelijktijdigheidsveilig. |
| cbegin | Retourneert een iterator van het type const_iterator aan het begin van de gelijktijdige vector. Deze methode is gelijktijdigheidsveilig. |
| cend | Retourneert een iterator van het type const_iterator aan het einde van de gelijktijdige vector. Deze methode is gelijktijdigheidsveilig. |
| wissen | Hiermee worden alle elementen in de gelijktijdige vector gewist. Deze methode is niet gelijktijdigheidsveilig. |
| crbegin | Retourneert een iterator van het type const_reverse_iterator aan het begin van de gelijktijdige vector. Deze methode is gelijktijdigheidsveilig. |
| crend | Retourneert een iterator van het type const_reverse_iterator aan het einde van de gelijktijdige vector. Deze methode is gelijktijdigheidsveilig. |
| leeg | Test of de gelijktijdige vector leeg is op het moment dat deze methode wordt aangeroepen. Deze methode is gelijktijdigheidsveilig. |
| einde | Overbelast. Retourneert een iterator van het type iterator of const_iterator aan het einde van de gelijktijdige vector. Deze methode is gelijktijdigheidsveilig. |
| voorzijde | Overbelast. Retourneert een verwijzing of een const verwijzing naar het eerste element in de gelijktijdige vector. Als de gelijktijdige vector leeg is, is de retourwaarde niet gedefinieerd. Deze methode is gelijktijdigheidsveilig. |
| get_allocator | Retourneert een kopie van de allocator die wordt gebruikt om de concurrente vector samen te stellen. Deze methode is gelijktijdigheidsveilig. |
| grow_by | Overbelast. Hiermee wordt deze gelijktijdige vector _Delta door elementen uitgebreid. Deze methode is gelijktijdigheidsveilig. |
| groei_tot_op_zijn_minst | Hiermee wordt deze gelijktijdige vector uitgebreid totdat deze ten minste _N elementen bevat. Deze methode is gelijktijdigheidsveilig. |
| max_size | Retourneert het maximum aantal elementen dat de gelijktijdige vector kan bevatten. Deze methode is gelijktijdigheidsveilig. |
| push_back | Overbelast. Voegt het opgegeven item toe aan het einde van de gelijktijdige vector. Deze methode is gelijktijdigheidsveilig. |
| rbegin | Overbelast. Retourneert een iterator van het type reverse_iterator of const_reverse_iterator aan het begin van de gelijktijdige vector. Deze methode is gelijktijdigheidsveilig. |
| rend | Overbelast. Retourneert een iterator van het type reverse_iterator of const_reverse_iterator aan het einde van de gelijktijdige vector. Deze methode is gelijktijdigheidsveilig. |
| reserveren | Wijst voldoende ruimte toe om de gelijktijdige vector te vergroten naar grootte _N zonder dat u later meer geheugen hoeft toe te wijzen. Deze methode is niet gelijktijdigheidsveilig. |
| het formaat van wijzigen | Overbelast. Hiermee wijzigt u de grootte van de gelijktijdige vector in de aangevraagde grootte, verwijdert of voegt u indien nodig elementen toe. Deze methode is niet gelijktijdigheidsveilig. |
| shrink_to_fit | Hiermee wordt de interne weergave van de gelijktijdige vector gecomprimeerd om fragmentatie te verminderen en het geheugengebruik te optimaliseren. Deze methode is niet gelijktijdigheidsveilig. |
| grootte | Retourneert het aantal elementen in de gelijktijdige vector. Deze methode is gelijktijdigheidsveilig. |
| wisselen | Hiermee wordt de inhoud van twee gelijktijdige vectoren gewisseld. Deze methode is niet gelijktijdigheidsveilig. |
Openbare operators
| Naam | Beschrijving |
|---|---|
| operator [] | Overbelast. Biedt toegang tot het element op de opgegeven index in de gelijktijdige vector. Deze methode is gelijktijdigheidsveilig voor leesbewerkingen en ook tijdens het vergroten van de vector, zolang u ervoor hebt gezorgd dat de waarde _Index kleiner is dan de grootte van de gelijktijdige vector. |
| operator = | Overbelast. Hiermee wordt de inhoud van een ander concurrent_vector object aan dit object toegewezen. Deze methode is niet gelijktijdigheidsveilig. |
Opmerkingen
Zie concurrent_vector voor gedetailleerde informatie over de klasse Parallelle Containers en Objecten.
Overnamehiërarchie
_Concurrent_vector_base_v4
_Allocator_base
concurrent_vector
Behoeften
Koptekst: concurrent_vector.h
Namespace: gelijktijdigheid
toewijzen
Hiermee wist u de elementen van de gelijktijdige vector en wijst het toe aan _N kopieën van _Item, of aan waarden die zijn opgegeven door het iteratorbereik [ _Begin, _End). Deze methode is niet gelijktijdigheidsveilig.
void assign(
size_type _N,
const_reference _Item);
template<class _InputIterator>
void assign(_InputIterator _Begin,
_InputIterator _End);
Parameterwaarden
_InputIterator
Het type van de opgegeven iterator.
_N
Het aantal items dat moet worden gekopieerd naar de gelijktijdige vector.
_Item
Verwijzing naar een waarde die wordt gebruikt om de gelijktijdige vector te vullen.
_Beginnen
Een iterator naar het eerste element van het bronbereik.
_Einde
Een iterator naar voorbij het laatste element van het bronbereik.
Opmerkingen
assign is niet gelijktijdigheidsveilig. U moet ervoor zorgen dat er geen andere threads methoden aanroepen op de gelijktijdige vector wanneer u deze methode aanroept.
om
Biedt toegang tot het element op de opgegeven index in de gelijktijdige vector. Deze methode is gelijktijdigheidsveilig voor leesbewerkingen en ook tijdens het vergroten van de vector, zolang u ervoor hebt gezorgd dat de waarde _Index kleiner is dan de grootte van de gelijktijdige vector.
reference at(size_type _Index);
const_reference at(size_type _Index) const;
Parameterwaarden
_Index
De index van het element dat moet worden opgehaald.
Retourwaarde
Een verwijzing naar het item in de opgegeven index.
Opmerkingen
De versie van de functie at die een referentie retourneert die geen const is, kan niet worden gebruikt om vanuit verschillende threads gelijktijdig naar het element te schrijven. Er moet een ander synchronisatieobject worden gebruikt om gelijktijdige lees- en schrijfbewerkingen te synchroniseren met hetzelfde gegevenselement.
De methode genereert out_of_range als _Index deze groter is dan of gelijk is aan de grootte van de gelijktijdige vector en range_error of de index voor een gebroken deel van de vector is. Zie Parallelle containers en objecten voor meer informatie over hoe een vector kan worden verbroken.
Terug
Retourneert een verwijzing of een const verwijzing naar het laatste element in de gelijktijdige vector. Als de gelijktijdige vector leeg is, is de retourwaarde niet gedefinieerd. Deze methode is gelijktijdigheidsveilig.
reference back();
const_reference back() const;
Retourwaarde
Een verwijzing of een const verwijzing naar het laatste element in de concurrerende vector.
beginnen
Retourneert een iterator van het type iterator of const_iterator aan het begin van de gelijktijdige vector. Deze methode is gelijktijdigheidsveilig.
iterator begin();
const_iterator begin() const;
Retourwaarde
Een iterator van het type iterator of const_iterator aan het begin van de gelijktijdige vector.
capaciteit
Retourneert de maximale grootte waarop de gelijktijdige vector kan groeien zonder dat er meer geheugen hoeft te worden toegewezen. Deze methode is gelijktijdigheidsveilig.
size_type capacity() const;
Retourwaarde
De maximale grootte waarop de gelijktijdige vector kan groeien zonder meer geheugen toe te wijzen.
Opmerkingen
In tegenstelling tot een standaardbibliotheek vectorvan C++ verplaatst een concurrent_vector object bestaande elementen niet als er meer geheugen wordt toegewezen.
cbegin
Retourneert een iterator van het type const_iterator aan het begin van de gelijktijdige vector. Deze methode is gelijktijdigheidsveilig.
const_iterator cbegin() const;
Retourwaarde
Een iterator van het type const_iterator aan het begin van de gelijktijdige vector.
cend
Retourneert een iterator van het type const_iterator aan het einde van de gelijktijdige vector. Deze methode is gelijktijdigheidsveilig.
const_iterator cend() const;
Retourwaarde
Een iterator van het type const_iterator aan het einde van de gelijktijdige vector.
duidelijk
Hiermee worden alle elementen in de gelijktijdige vector gewist. Deze methode is niet gelijktijdigheidsveilig.
void clear();
Opmerkingen
clear is niet gelijktijdigheidsveilig. U moet ervoor zorgen dat er geen andere threads methoden aanroepen op de gelijktijdige vector wanneer u deze methode aanroept.
clear maakt geen interne matrices vrij. Als u de interne arrays wilt vrijmaken, roept u de functie shrink_to_fit aan na clear.
concurrent_vector
Maakt een concurrerende vector.
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());
Parameterwaarden
M
Het allocatortype van de bronvector.
_InputIterator
Het type invoer-iterator.
_Al
De allocatorklasse die met dit object moet worden gebruikt.
_Vector
Het bronobject concurrent_vector waarvan elementen worden gekopieerd of verplaatst.
_N
De oorspronkelijke capaciteit van het concurrent_vector object.
_Item
De waarde van elementen in het samengestelde object.
_Beginnen
Positie van het eerste element in het bereik van elementen dat moet worden gekopieerd.
_Einde
Positie van het eerste element buiten het bereik van elementen dat moet worden gekopieerd.
Opmerkingen
Alle constructors slaan een allocatorobject _Al op en initialiseren de vector.
De eerste constructor geeft een lege initiële vector op en specificeert expliciet het allocatortype. te gebruiken.
De tweede en derde constructors geven een kopie van de gelijktijdige vector _Vectorop.
De vierde constructor geeft een verplaatsing van de gelijktijdige vector _Vectorop.
De vijfde constructor geeft een herhaling op van een opgegeven getal (_N) van elementen van de standaardwaarde voor klasse T.
De zesde constructor geeft een herhaling van (_N) elementen van waarde _Itemaan.
De laatste constructor geeft waarden op die worden opgegeven door het iteratorbereik [ _Begin, _End).
~concurrent_vector
Alle elementen wissen en deze gelijktijdige vector vernietigen.
~concurrent_vector();
crbegin
Retourneert een iterator van het type const_reverse_iterator aan het begin van de gelijktijdige vector. Deze methode is gelijktijdigheidsveilig.
const_reverse_iterator crbegin() const;
Retourwaarde
Een iterator van het type const_reverse_iterator aan het begin van de gelijktijdige vector.
crend
Retourneert een iterator van het type const_reverse_iterator aan het einde van de gelijktijdige vector. Deze methode is gelijktijdigheidsveilig.
const_reverse_iterator crend() const;
Retourwaarde
Een iterator van het type const_reverse_iterator aan het einde van de gelijktijdige vector.
leeg
Test of de gelijktijdige vector leeg is op het moment dat deze methode wordt aangeroepen. Deze methode is gelijktijdigheidsveilig.
bool empty() const;
Retourwaarde
true als de vector leeg was op het moment dat de functie werd aangeroepen, false anders.
einde
Retourneert een iterator van het type iterator of const_iterator aan het einde van de gelijktijdige vector. Deze methode is gelijktijdigheidsveilig.
iterator end();
const_iterator end() const;
Retourwaarde
Een iterator van het type iterator of const_iterator aan het einde van de gelijktijdige vector.
voorzijde
Retourneert een verwijzing of een const verwijzing naar het eerste element in de gelijktijdige vector. Als de gelijktijdige vector leeg is, is de retourwaarde niet gedefinieerd. Deze methode is gelijktijdigheidsveilig.
reference front();
const_reference front() const;
Retourwaarde
Een verwijzing of een const verwijzing naar het eerste element in de gelijktijdige vector.
get_allocator
Retourneert een kopie van de allocator die wordt gebruikt om de concurrente vector samen te stellen. Deze methode is gelijktijdigheidsveilig.
allocator_type get_allocator() const;
Retourwaarde
Een kopie van de allocator die wordt gebruikt om het concurrent_vector object te construeren.
grow_by
Hiermee wordt deze gelijktijdige vector _Delta door elementen uitgebreid. Deze methode is gelijktijdigheidsveilig.
iterator grow_by(
size_type _Delta);
iterator grow_by(
size_type _Delta,
const_reference _Item);
Parameterwaarden
_Delta
Het aantal elementen dat moet worden toegevoegd aan het object.
_Item
De waarde waarmee de nieuwe elementen moeten worden geïnitialiseerd.
Retourwaarde
Een iterator voor het eerste item dat wordt toegevoegd.
Opmerkingen
Als _Item niet is opgegeven, worden de nieuwe elementen standaard geconstrueerd.
groei_tot_minimaal
Hiermee wordt deze gelijktijdige vector uitgebreid totdat deze ten minste _N elementen bevat. Deze methode is gelijktijdigheidsveilig.
iterator grow_to_at_least(size_type _N);
Parameterwaarden
_N
De nieuwe minimale grootte voor het concurrent_vector object.
Retourwaarde
Een iterator die verwijst naar het begin van de toegevoegde reeks of naar het element bij de index _N als er geen elementen zijn toegevoegd.
maximale_grootte
Retourneert het maximum aantal elementen dat de gelijktijdige vector kan bevatten. Deze methode is gelijktijdigheidsveilig.
size_type max_size() const;
Retourwaarde
Het maximum aantal elementen dat het concurrent_vector object kan bevatten.
operator=
Hiermee wordt de inhoud van een ander concurrent_vector object aan dit object toegewezen. Deze methode is niet gelijktijdigheidsveilig.
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);
Parameterwaarden
M
Het allocatortype van de bronvector.
_Vector
Het bronobject concurrent_vector.
Retourwaarde
Een verwijzing naar dit concurrent_vector-object.
operator[]
Biedt toegang tot het element op de opgegeven index in de gelijktijdige vector. Deze methode is gelijktijdigheidsveilig voor leesbewerkingen en ook tijdens het vergroten van de vector, zolang u ervoor hebt gezorgd dat de waarde _Index kleiner is dan de grootte van de gelijktijdige vector.
reference operator[](size_type _index);
const_reference operator[](size_type _index) const;
Parameterwaarden
_Index
De index van het element dat moet worden opgehaald.
Retourwaarde
Een verwijzing naar het item in de opgegeven index.
Opmerkingen
De versie van operator [] die geen const verwijzing retourneert, kan niet worden gebruikt om het element vanuit verschillende threads gelijktijdig te beschrijven. Er moet een ander synchronisatieobject worden gebruikt om gelijktijdige lees- en schrijfbewerkingen te synchroniseren met hetzelfde gegevenselement.
Er worden geen grenstesten uitgevoerd om ervoor te zorgen dat _Index een geldige index in de gelijktijdige vector is.
push_back
Voegt het opgegeven item toe aan het einde van de gelijktijdige vector. Deze methode is gelijktijdigheidsveilig.
iterator push_back(const_reference _Item);
iterator push_back(T&& _Item);
Parameterwaarden
_Item
De waarde die moet worden toegevoegd.
Retourwaarde
Er wordt een iterator toegevoegd aan het item.
rbegin
Retourneert een iterator van het type reverse_iterator of const_reverse_iterator aan het begin van de gelijktijdige vector. Deze methode is gelijktijdigheidsveilig.
reverse_iterator rbegin();
const_reverse_iterator rbegin() const;
Retourwaarde
Een iterator van het type reverse_iterator of const_reverse_iterator aan het begin van de gelijktijdige vector.
renderen
Retourneert een iterator van het type reverse_iterator of const_reverse_iterator aan het einde van de gelijktijdige vector. Deze methode is gelijktijdigheidsveilig.
reverse_iterator rend();
const_reverse_iterator rend() const;
Retourwaarde
Een iterator van het type reverse_iterator of const_reverse_iterator aan het einde van de gelijktijdige vector.
reserveren
Wijst voldoende ruimte toe om de gelijktijdige vector te vergroten naar grootte _N zonder dat u later meer geheugen hoeft toe te wijzen. Deze methode is niet gelijktijdigheidsveilig.
void reserve(size_type _N);
Parameterwaarden
_N
Het aantal elementen waarvoor ruimte moet worden gereserveerd.
Opmerkingen
reserve is niet gelijktijdigheidsveilig. U moet ervoor zorgen dat er geen andere threads methoden aanroepen op de gelijktijdige vector wanneer u deze methode aanroept. De capaciteit van de gelijktijdige vector nadat de methode retourneert, kan groter zijn dan de aangevraagde reservering.
formaat wijzigen
Hiermee wijzigt u de grootte van de gelijktijdige vector in de aangevraagde grootte, verwijdert of voegt u indien nodig elementen toe. Deze methode is niet gelijktijdigheidsveilig.
void resize(
size_type _N);
void resize(
size_type _N,
const T& val);
Parameterwaarden
_N
De nieuwe grootte van de concurrent_vector.
val
De waarde van nieuwe elementen die aan de vector worden toegevoegd als de nieuwe grootte groter is dan de oorspronkelijke grootte. Als de waarde wordt weggelaten, krijgen de nieuwe objecten de standaardwaarde toegewezen voor hun type.
Opmerkingen
Als de grootte van de container kleiner is dan de aangevraagde grootte, worden elementen toegevoegd aan de vector totdat deze de aangevraagde grootte bereikt. Als de grootte van de container groter is dan de aangevraagde grootte, worden de elementen die het dichtst bij het einde van de container liggen, verwijderd totdat de container de grootte _Nbereikt. Als de huidige grootte van de container gelijk is aan de aangevraagde grootte, wordt er geen actie ondernomen.
resize is niet gelijktijdigheid veilig. U moet ervoor zorgen dat er geen andere threads methoden aanroepen op de gelijktijdige vector wanneer u deze methode aanroept.
shrink_to_fit
Hiermee wordt de interne weergave van de gelijktijdige vector gecomprimeerd om fragmentatie te verminderen en het geheugengebruik te optimaliseren. Deze methode is niet gelijktijdigheidsveilig.
void shrink_to_fit();
Opmerkingen
Met deze methode wordt het geheugen intern opnieuw toegewezen en worden elementen verplaatst, waardoor alle iterators ongeldig worden.
shrink_to_fit is niet gelijktijdigheidsveilig. U moet ervoor zorgen dat er geen andere threads methoden aanroepen op de gelijktijdige vector wanneer u deze functie aanroept.
grootte
Retourneert het aantal elementen in de gelijktijdige vector. Deze methode is gelijktijdigheidsveilig.
size_type size() const;
Retourwaarde
Het aantal elementen in dit concurrent_vector object.
Opmerkingen
De geretourneerde grootte is gegarandeerd dat alle elementen die worden toegevoegd door aanroepen naar de functie push_back, of groeibewerkingen die zijn voltooid voordat deze methode wordt aangeroepen, worden opgenomen. Het kan echter ook elementen bevatten die worden toegewezen, maar die nog steeds worden gebouwd door gelijktijdige aanroepen naar een van de groeimethoden.
wisselen
Hiermee wordt de inhoud van twee gelijktijdige vectoren gewisseld. Deze methode is niet gelijktijdigheidsveilig.
void swap(concurrent_vector& _Vector);
Parameterwaarden
_Vector
Het concurrent_vector object waarmee inhoud wordt gewisseld.