Udostępnij za pośrednictwem


concurrent_vector — Klasa

Klasa concurrent_vector jest klasą kontenera sekwencji, która umożliwia losowy dostęp do dowolnego elementu. Umożliwia ona bezpieczne dołączanie współbieżności, dostęp do elementów, dostęp iteratora i operacje przechodzenia iteratora. W tym miejscu wskaźniki lub iteratory są zawsze prawidłowe. Nie jest to gwarancja inicjowania elementów ani określonej kolejności przechodzenia.

Składnia

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

Parametry

T
Typ danych elementów, które mają być przechowywane w wektorze.

_Siekiera
Typ reprezentujący przechowywany obiekt alokatora, który hermetyzuje szczegółowe informacje o alokacji i cofnięciu przydziału pamięci dla wektora współbieżnego. Ten argument jest opcjonalny, a wartość domyślna to allocator<T>.

Elementy członkowskie

Definicje typów publicznych

Nazwa/nazwisko opis
allocator_type Typ reprezentujący klasę alokatora dla wektora współbieżnego.
const_iterator Typ, który udostępnia iterator dostępu losowego, który może odczytywać const element w wektorze współbieżnym.
const_pointer Typ, który dostarcza wskaźnik do const elementu w wektorze współbieżnym.
const_reference Typ, który zawiera odwołanie do elementu przechowywanego const w wektorze współbieżnym na potrzeby odczytywania i wykonywania const operacji.
const_reverse_iterator Typ, który udostępnia iterator dostępu losowego, który może odczytywać dowolny const element w wektorze współbieżnym.
difference_type Typ, który zapewnia odległość ze znakiem między dwoma elementami w wektorze współbieżnym.
iterator Typ, który udostępnia iterator dostępu losowego, który może odczytywać dowolny element w wektorze współbieżnym. Modyfikowanie elementu przy użyciu iteratora nie jest bezpieczne ze współbieżnością.
pointer Typ, który dostarcza wskaźnik do elementu w wektorze współbieżnym.
reference Typ, który zawiera odwołanie do elementu przechowywanego w wektorze współbieżnym.
reverse_iterator Typ, który udostępnia iterator dostępu losowego, który może odczytywać dowolny element w odwróconym wektorze współbieżnym. Modyfikowanie elementu przy użyciu iteratora nie jest bezpieczne ze współbieżnością.
size_type Typ, który zlicza elementy w wektorze współbieżnym.
value_type Typ reprezentujący typ danych przechowywany w wektorze współbieżnym.

Konstruktory publiczne

Nazwa/nazwisko opis
concurrent_vector Przeciążone. Tworzy wektor współbieżny.
~concurrent_vector Destruktor Usuwa wszystkie elementy i niszczy ten wektor współbieżny.

Metody publiczne

Nazwa/nazwisko opis
przypisać Przeciążone. Usuwa elementy wektora współbieżnego i przypisuje do niego _N kopie _Itemwartości lub określone przez zakres iteratora [ _Begin, _End). Ta metoda nie jest bezpieczna współbieżności.
przy Przeciążone. Zapewnia dostęp do elementu w danym indeksie w wektorze współbieżnych. Ta metoda jest bezpieczna dla operacji odczytu, a także podczas zwiększania wektora, o ile upewniono się, że wartość _Index jest mniejsza niż rozmiar wektora współbieżnego.
Wstecz Przeciążone. Zwraca odwołanie lub const odwołanie do ostatniego elementu w wektorze współbieżnym. Jeśli wektor współbieżny jest pusty, wartość zwracana jest niezdefiniowana. Ta metoda jest bezpieczna współbieżności.
zaczynać Przeciążone. Zwraca iterator typu iterator lub const_iterator na początku wektora współbieżnego. Ta metoda jest bezpieczna współbieżności.
pojemność Zwraca maksymalny rozmiar, do którego może rosnąć wektor współbieżny bez konieczności przydzielania większej ilości pamięci. Ta metoda jest bezpieczna współbieżności.
cbegin Zwraca iterator typu const_iterator na początku wektora współbieżnego. Ta metoda jest bezpieczna współbieżności.
cend Zwraca iterator typu const_iterator na końcu wektora współbieżnego. Ta metoda jest bezpieczna współbieżności.
jasny Usuwa wszystkie elementy w wektorze współbieżnych. Ta metoda nie jest bezpieczna współbieżności.
crbegin Zwraca iterator typu const_reverse_iterator na początku wektora współbieżnego. Ta metoda jest bezpieczna współbieżności.
crend Zwraca iterator typu const_reverse_iterator na końcu wektora współbieżnego. Ta metoda jest bezpieczna współbieżności.
empty Sprawdza, czy wektor współbieżny jest pusty w momencie wywołania tej metody. Ta metoda jest bezpieczna współbieżności.
koniec Przeciążone. Zwraca iterator typu iterator lub const_iterator na końcu wektora współbieżnego. Ta metoda jest bezpieczna współbieżności.
front Przeciążone. Zwraca odwołanie lub const odwołanie do pierwszego elementu w wektorze współbieżnym. Jeśli wektor współbieżny jest pusty, wartość zwracana jest niezdefiniowana. Ta metoda jest bezpieczna współbieżności.
get_allocator Zwraca kopię alokatora używanego do konstruowania wektora współbieżnego. Ta metoda jest bezpieczna współbieżności.
grow_by Przeciążone. Zwiększa ten współbieżny wektor według _Delta elementów. Ta metoda jest bezpieczna współbieżności.
grow_to_at_least Zwiększa ten wektor współbieżny, dopóki nie będzie miał co najmniej _N elementów. Ta metoda jest bezpieczna współbieżności.
max_size Zwraca maksymalną liczbę elementów, które może pomieścić wektor współbieżny. Ta metoda jest bezpieczna współbieżności.
push_back Przeciążone. Dołącza dany element na końcu wektora współbieżnego. Ta metoda jest bezpieczna współbieżności.
rbegin Przeciążone. Zwraca iterator typu reverse_iterator lub const_reverse_iterator na początku wektora współbieżnego. Ta metoda jest bezpieczna współbieżności.
drzeć Przeciążone. Zwraca iterator typu reverse_iterator lub const_reverse_iterator na końcu wektora współbieżnego. Ta metoda jest bezpieczna współbieżności.
rezerwować Przydziela wystarczającą ilość miejsca, aby zwiększyć współbieżny wektor do rozmiaru _N bez konieczności późniejszego przydzielenia większej ilości pamięci. Ta metoda nie jest bezpieczna współbieżności.
Zmienić rozmiar Przeciążone. Zmienia rozmiar wektora współbieżnego na żądany rozmiar, usuwanie lub dodawanie elementów w razie potrzeby. Ta metoda nie jest bezpieczna współbieżności.
shrink_to_fit Kompaktuje wewnętrzną reprezentację wektora współbieżnego, aby zmniejszyć fragmentację i zoptymalizować użycie pamięci. Ta metoda nie jest bezpieczna współbieżności.
rozmiar Zwraca liczbę elementów w wektorze współbieżnych. Ta metoda jest bezpieczna współbieżności.
zamiana Zamienia zawartość dwóch współbieżnych wektorów. Ta metoda nie jest bezpieczna współbieżności.

Operatory publiczne

Nazwa/nazwisko opis
operator[] Przeciążone. Zapewnia dostęp do elementu w danym indeksie w wektorze współbieżnych. Ta metoda jest bezpieczna współbieżności dla operacji odczytu, a także podczas zwiększania wektora, o ile upewniono się, że wartość _Index jest mniejsza niż rozmiar wektora współbieżnego.
operator = Przeciążone. Przypisuje zawartość innego concurrent_vector obiektu do tego obiektu. Ta metoda nie jest bezpieczna współbieżności.

Uwagi

Aby uzyskać szczegółowe informacje na concurrent_vector temat klasy, zobacz Parallel Containers and Objects (Kontenery równoległe i obiekty).

Hierarchia dziedziczenia

_Concurrent_vector_base_v4

_Allocator_base

concurrent_vector

Wymagania

Nagłówek: concurrent_vector.h

Przestrzeń nazw: współbieżność

przypisywanie

Usuwa elementy wektora współbieżnego i przypisuje do niego _N kopie _Itemwartości lub określone przez zakres iteratora [ _Begin, _End). Ta metoda nie jest bezpieczna współbieżności.

void assign(
    size_type _N,
    const_reference _Item);

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

Parametry

_InputIterator
Typ określonego iteratora.

_N
Liczba elementów do skopiowania do wektora współbieżnego.

_Przedmiot
Odwołanie do wartości używanej do wypełnienia wektora współbieżnego.

_Zaczynać
Iterator pierwszego elementu zakresu źródłowego.

_Koniec
Iterator do jednego ostatniego elementu zakresu źródłowego.

Uwagi

assign nie jest bezpieczny dla współbieżności. Podczas wywoływania tej metody należy upewnić się, że żadne inne wątki nie są wywoływane wektora współbieżnego.

o

Zapewnia dostęp do elementu w danym indeksie w wektorze współbieżnych. Ta metoda jest bezpieczna dla operacji odczytu, a także podczas zwiększania wektora, o ile upewniono się, że wartość _Index jest mniejsza niż rozmiar wektora współbieżnego.

reference at(size_type _Index);

const_reference at(size_type _Index) const;

Parametry

_Indeks
Indeks elementu do pobrania.

Wartość zwracana

Odwołanie do elementu w danym indeksie.

Uwagi

Wersja funkcji at zwracającej odwołanie nie const może być używana do współbieżnego zapisu w elemencie z różnych wątków. Inny obiekt synchronizacji powinien służyć do synchronizowania współbieżnych operacji odczytu i zapisu do tego samego elementu danych.

Metoda zgłasza wartość out_of_range , jeśli _Index jest większa lub równa rozmiarowi wektora współbieżnego, a range_error indeks dotyczy uszkodzonej części wektora. Aby uzyskać szczegółowe informacje na temat sposobu uszkodzenia wektora, zobacz Parallel Containers and Objects (Kontenery równoległe i obiekty).

wstecz

Zwraca odwołanie lub const odwołanie do ostatniego elementu w wektorze współbieżnym. Jeśli wektor współbieżny jest pusty, wartość zwracana jest niezdefiniowana. Ta metoda jest bezpieczna współbieżności.

reference back();

const_reference back() const;

Wartość zwracana

Odwołanie lub const odwołanie do ostatniego elementu w wektorze współbieżnym.

zaczynać

Zwraca iterator typu iterator lub const_iterator na początku wektora współbieżnego. Ta metoda jest bezpieczna współbieżności.

iterator begin();

const_iterator begin() const;

Wartość zwracana

Iterator typu iterator lub const_iterator na początku wektora współbieżnego.

capacity

Zwraca maksymalny rozmiar, do którego może rosnąć wektor współbieżny bez konieczności przydzielania większej ilości pamięci. Ta metoda jest bezpieczna współbieżności.

size_type capacity() const;

Wartość zwracana

Maksymalny rozmiar, do którego może rosnąć wektor współbieżny bez konieczności przydzielania większej ilości pamięci.

Uwagi

W przeciwieństwie do standardowej biblioteki vectorconcurrent_vector języka C++ obiekt nie przenosi istniejących elementów, jeśli przydziela więcej pamięci.

cbegin

Zwraca iterator typu const_iterator na początku wektora współbieżnego. Ta metoda jest bezpieczna współbieżności.

const_iterator cbegin() const;

Wartość zwracana

Iterator typu const_iterator na początku wektora współbieżnego.

cend

Zwraca iterator typu const_iterator na końcu wektora współbieżnego. Ta metoda jest bezpieczna współbieżności.

const_iterator cend() const;

Wartość zwracana

Iterator typu const_iterator na końcu wektora współbieżnego.

jasny

Usuwa wszystkie elementy w wektorze współbieżnych. Ta metoda nie jest bezpieczna współbieżności.

void clear();

Uwagi

clear nie jest bezpieczny dla współbieżności. Podczas wywoływania tej metody należy upewnić się, że żadne inne wątki nie są wywoływane wektora współbieżnego. clear nie zwalnia tablic wewnętrznych. Aby zwolnić tablice wewnętrzne, wywołaj funkcję shrink_to_fit po clear.

concurrent_vector

Tworzy wektor współbieżny.

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

Parametry

M
Typ alokatora wektora źródłowego.

_InputIterator
Typ iteratora wejściowego.

_Al
Klasa alokatora do wykorzystania z tym obiektem.

_Wektor
Obiekt źródłowy concurrent_vector do kopiowania lub przenoszenia elementów.

_N
Początkowa pojemność concurrent_vector obiektu.

_Przedmiot
Wartość elementów w skonstruowanym obiekcie.

_Zaczynać
Pozycja pierwszego elementu w zakresie elementów do skopiowania.

_Koniec
Położenie pierwszego elementu poza zakresem elementów do skopiowania.

Uwagi

Wszystkie konstruktory przechowują obiekt _Al alokatora i inicjują wektor.

Pierwszy konstruktor określa pusty wektor początkowy i jawnie określa typ alokatora. do użycia.

Drugie i trzecie konstruktory określają kopię współbieżnego wektora _Vector.

Czwarty konstruktor określa ruch wektora _Vectorwspółbieżnego .

Piąty konstruktor określa powtórzenie określonej liczby ( _N) elementów wartości domyślnej dla klasy T.

Szósty konstruktor określa powtórzenie _N( ) elementów wartości _Item.

Ostatni konstruktor określa wartości dostarczone przez zakres iteratora [ _Begin, _End).

~concurrent_vector

Usuwa wszystkie elementy i niszczy ten wektor współbieżny.

~concurrent_vector();

crbegin

Zwraca iterator typu const_reverse_iterator na początku wektora współbieżnego. Ta metoda jest bezpieczna współbieżności.

const_reverse_iterator crbegin() const;

Wartość zwracana

Iterator typu const_reverse_iterator na początku wektora współbieżnego.

crend

Zwraca iterator typu const_reverse_iterator na końcu wektora współbieżnego. Ta metoda jest bezpieczna współbieżności.

const_reverse_iterator crend() const;

Wartość zwracana

Iterator typu const_reverse_iterator na końcu wektora współbieżnego.

empty

Sprawdza, czy wektor współbieżny jest pusty w momencie wywołania tej metody. Ta metoda jest bezpieczna współbieżności.

bool empty() const;

Wartość zwracana

true jeśli wektor był pusty w momencie wywołania funkcji, false w przeciwnym razie.

end

Zwraca iterator typu iterator lub const_iterator na końcu wektora współbieżnego. Ta metoda jest bezpieczna współbieżności.

iterator end();

const_iterator end() const;

Wartość zwracana

Iterator typu iterator lub const_iterator na końcu wektora współbieżnego.

front

Zwraca odwołanie lub const odwołanie do pierwszego elementu w wektorze współbieżnym. Jeśli wektor współbieżny jest pusty, wartość zwracana jest niezdefiniowana. Ta metoda jest bezpieczna współbieżności.

reference front();

const_reference front() const;

Wartość zwracana

Odwołanie lub const odwołanie do pierwszego elementu w wektorze współbieżnym.

get_allocator

Zwraca kopię alokatora używanego do konstruowania wektora współbieżnego. Ta metoda jest bezpieczna współbieżności.

allocator_type get_allocator() const;

Wartość zwracana

Kopia alokatora używanego do konstruowania concurrent_vector obiektu.

grow_by

Zwiększa ten współbieżny wektor według _Delta elementów. Ta metoda jest bezpieczna współbieżności.

iterator grow_by(
    size_type _Delta);

iterator grow_by(
    size_type _Delta,
    const_reference _Item);

Parametry

_Delta
Liczba elementów do dołączenia do obiektu.

_Przedmiot
Wartość inicjowania nowych elementów za pomocą polecenia .

Wartość zwracana

Iterator do pierwszego dołączonego elementu.

Uwagi

Jeśli _Item nie zostanie określony, nowe elementy są konstruowane domyślnie.

grow_to_at_least

Zwiększa ten wektor współbieżny, dopóki nie będzie miał co najmniej _N elementów. Ta metoda jest bezpieczna współbieżności.

iterator grow_to_at_least(size_type _N);

Parametry

_N
Nowy minimalny rozmiar concurrent_vector obiektu.

Wartość zwracana

Iterator wskazujący początek dołączanej sekwencji lub do elementu w indeksie _N , jeśli nie dołączono żadnych elementów.

max_size

Zwraca maksymalną liczbę elementów, które może pomieścić wektor współbieżny. Ta metoda jest bezpieczna współbieżności.

size_type max_size() const;

Wartość zwracana

Maksymalna liczba elementów, które concurrent_vector może pomieścić obiekt.

operator =

Przypisuje zawartość innego concurrent_vector obiektu do tego obiektu. Ta metoda nie jest bezpieczna współbieżności.

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

Parametry

M
Typ alokatora wektora źródłowego.

_Wektor
Obiekt źródłowy concurrent_vector .

Wartość zwracana

Odwołanie do tego concurrent_vector obiektu.

operator[]

Zapewnia dostęp do elementu w danym indeksie w wektorze współbieżnych. Ta metoda jest bezpieczna współbieżności dla operacji odczytu, a także podczas zwiększania wektora, o ile upewniono się, że wartość _Index jest mniejsza niż rozmiar wektora współbieżnego.

reference operator[](size_type _index);

const_reference operator[](size_type _index) const;

Parametry

_Indeks
Indeks elementu do pobrania.

Wartość zwracana

Odwołanie do elementu w danym indeksie.

Uwagi

Wersja tej funkcji operator [] zwraca odwołanie inne niż const odwołanie nie może być używana do współbieżnego zapisu w elemencie z różnych wątków. Inny obiekt synchronizacji powinien służyć do synchronizowania współbieżnych operacji odczytu i zapisu do tego samego elementu danych.

Nie jest wykonywane sprawdzanie granic, aby upewnić się, że _Index jest to prawidłowy indeks do wektora współbieżnego.

push_back

Dołącza dany element na końcu wektora współbieżnego. Ta metoda jest bezpieczna współbieżności.

iterator push_back(const_reference _Item);

iterator push_back(T&& _Item);

Parametry

_Przedmiot
Wartość do dołączenia.

Wartość zwracana

Dołączono iterator do elementu.

rbegin

Zwraca iterator typu reverse_iterator lub const_reverse_iterator na początku wektora współbieżnego. Ta metoda jest bezpieczna współbieżności.

reverse_iterator rbegin();

const_reverse_iterator rbegin() const;

Wartość zwracana

Iterator typu reverse_iterator lub const_reverse_iterator na początku wektora współbieżnego.

drzeć

Zwraca iterator typu reverse_iterator lub const_reverse_iterator na końcu wektora współbieżnego. Ta metoda jest bezpieczna współbieżności.

reverse_iterator rend();

const_reverse_iterator rend() const;

Wartość zwracana

Iterator typu reverse_iterator lub const_reverse_iterator na końcu wektora współbieżnego.

rezerwować

Przydziela wystarczającą ilość miejsca, aby zwiększyć współbieżny wektor do rozmiaru _N bez konieczności późniejszego przydzielenia większej ilości pamięci. Ta metoda nie jest bezpieczna współbieżności.

void reserve(size_type _N);

Parametry

_N
Liczba elementów do zarezerwowania miejsca.

Uwagi

reserve nie jest bezpieczny dla współbieżności. Podczas wywoływania tej metody należy upewnić się, że żadne inne wątki nie są wywoływane wektora współbieżnego. Pojemność wektora współbieżnego po zwracaniu metody może być większa niż żądana rezerwacja.

zmiana rozmiaru

Zmienia rozmiar wektora współbieżnego na żądany rozmiar, usuwanie lub dodawanie elementów w razie potrzeby. Ta metoda nie jest bezpieczna współbieżności.

void resize(
    size_type _N);

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

Parametry

_N
Nowy rozmiar concurrent_vector.

Val
Wartość nowych elementów dodanych do wektora, jeśli nowy rozmiar jest większy niż rozmiar oryginalny. Jeśli wartość zostanie pominięta, nowe obiekty zostaną przypisane do wartości domyślnej dla ich typu.

Uwagi

Jeśli rozmiar kontenera jest mniejszy niż żądany rozmiar, elementy są dodawane do wektora, dopóki nie osiągnie żądanego rozmiaru. Jeśli rozmiar kontenera jest większy niż żądany rozmiar, elementy znajdujące się najbliżej końca kontenera zostaną usunięte, dopóki kontener nie osiągnie rozmiaru _N. Jeśli obecny rozmiar kontenera jest taki sam jak żądany rozmiar, nie zostanie podjęta żadna akcja.

resize nie jest bezpieczna współbieżność. Podczas wywoływania tej metody należy upewnić się, że żadne inne wątki nie są wywoływane wektora współbieżnego.

shrink_to_fit

Kompaktuje wewnętrzną reprezentację wektora współbieżnego, aby zmniejszyć fragmentację i zoptymalizować użycie pamięci. Ta metoda nie jest bezpieczna współbieżności.

void shrink_to_fit();

Uwagi

Ta metoda wewnętrznie ponownie przydzieli elementy przenoszenia pamięci, unieważniając wszystkie iteratory. shrink_to_fit nie jest bezpieczny dla współbieżności. Podczas wywoływania tej funkcji żadne inne wątki nie są wywoływane metody wektora współbieżnego.

size

Zwraca liczbę elementów w wektorze współbieżnych. Ta metoda jest bezpieczna współbieżności.

size_type size() const;

Wartość zwracana

Liczba elementów w tym concurrent_vector obiekcie.

Uwagi

Zwrócony rozmiar jest gwarantowany, aby uwzględnić wszystkie elementy dołączone przez wywołania funkcji push_backlub zwiększyć operacje, które zostały ukończone przed wywołaniem tej metody. Może jednak również zawierać elementy, które są przydzielane, ale nadal w budowie przez współbieżne wywołania do dowolnej z metod wzrostu.

swap

Zamienia zawartość dwóch współbieżnych wektorów. Ta metoda nie jest bezpieczna współbieżności.

void swap(concurrent_vector& _Vector);

Parametry

_Wektor
Obiekt concurrent_vector do zamiany zawartości na.

Zobacz też

Przestrzeń nazw współbieżności
Równoległe kontenery oraz obiekty