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 _Item wartoś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 _Item
wartoś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 vector
concurrent_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 _Vector
współ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_back
lub 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