Delen via


concurrent_vector-klasse

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 is geen garantie voor het initialiseren van elementen of van een bepaalde doorkruisingsvolgorde.

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.

_Bijl
Het type dat het opgeslagen allocatorobject vertegenwoordigt dat details bevat over de toewijzing en toewijzing van het geheugen voor de gelijktijdige 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 ondertekende afstand tussen twee elementen in een gelijktijdige vector aanbiedt.
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 gelijktijdige 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 u deze toe aan _N kopieën van _Item, of 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 gelijktijdige vector samen te stellen. Deze methode is gelijktijdigheidsveilig.
grow_by Overbelast. Hiermee wordt deze gelijktijdige vector _Delta door elementen uitgebreid. Deze methode is gelijktijdigheidsveilig.
grow_to_at_least 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_vectorvoor gedetailleerde informatie over de klasse .

Overnamehiërarchie

_Concurrent_vector_base_v4

_Allocator_base

concurrent_vector

Behoeften

Koptekst: concurrent_vector.h

naamruimte: gelijktijdigheid

toewijzen

Hiermee wist u de elementen van de gelijktijdige vector en wijst u deze toe aan _N kopieën van _Item, of 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 een na 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 niet-verwijzing const retourneert, kan niet worden gebruikt om gelijktijdig vanuit verschillende threads 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 gelijktijdige 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 interne matrices wilt vrijen, roept u de functie shrink_to_fit aan na clear.

concurrent_vector

Maakt een gelijktijdige 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 kopiëren of verplaatsen van elementen.

_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 gelijktijdige 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 samen te stellen.

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 waaraan het eerste item is toegevoegd.

Opmerkingen

Als _Item dit niet is opgegeven, worden de nieuwe elementen standaard samengesteld.

grow_to_at_least

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 retourneert een niet-verwijzing const kan niet worden gebruikt om gelijktijdig vanuit verschillende threads naar het element te schrijven. Er moet een ander synchronisatieobject worden gebruikt om gelijktijdige lees- en schrijfbewerkingen te synchroniseren met hetzelfde gegevenselement.

Er wordt geen controle van grenzen uitgevoerd om ervoor te zorgen dat _Index het een geldige index is in de gelijktijdige vector.

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.

rend

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 intern geheugenverplaatsingselementen opnieuw toegewezen, waarbij 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.

ruilen

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 moet worden gewisseld.

Zie ook

naamruimte voor gelijktijdigheid
parallelle containers en objecten