concurrent_vector – třída
Třída concurrent_vector
je sekvenční třída kontejneru, která umožňuje náhodný přístup k libovolnému prvku. Umožňuje souběžné bezpečné připojení, přístup k prvkům, přístup k iterátoru a operace procházení iterátoru. V této chvíli souběžnost znamená, že ukazatele nebo iterátory jsou vždy platné. Nejedná se o záruku inicializace prvků ani konkrétního pořadí procházení.
Syntaxe
template<typename T, class _Ax>
class concurrent_vector: protected details::_Allocator_base<T,
_Ax>,
private details::_Concurrent_vector_base_v4;
Parametry
T
Datový typ prvků, které mají být uloženy ve vektoru.
_Sekyra
Typ, který představuje uložený objekt alokátoru, který zapouzdřuje podrobnosti o přidělení a uvolnění paměti pro souběžný vektor. Tento argument je nepovinný a výchozí hodnota je allocator<T>
.
Členové
Veřejné definice typedef
Název | Popis |
---|---|
allocator_type |
Typ, který představuje třídu alokátoru pro souběžný vektor. |
const_iterator |
Typ, který poskytuje iterátor náhodného přístupu, který může číst const prvek v souběžné vektor. |
const_pointer |
Typ, který poskytuje ukazatel na const prvek souběžného vektoru. |
const_reference |
Typ, který poskytuje odkaz na const prvek uložený v souběžné vektor pro čtení a provádění const operací. |
const_reverse_iterator |
Typ, který poskytuje iterátor náhodného přístupu, který může číst libovolný const prvek v souběžné vektoru. |
difference_type |
Typ, který poskytuje podepsanou vzdálenost mezi dvěma prvky souběžného vektoru. |
iterator |
Typ, který poskytuje iterátor náhodného přístupu, který může číst libovolný prvek v souběžné vektoru. Úprava prvku pomocí iterátoru není bezpečná souběžnost. |
pointer |
Typ, který poskytuje ukazatel na prvek souběžného vektoru. |
reference |
Typ, který poskytuje odkaz na prvek uložený ve souběžné vektoru. |
reverse_iterator |
Typ, který poskytuje iterátor náhodného přístupu, který může číst libovolný prvek v obráceném souběžném vektoru. Úprava prvku pomocí iterátoru není bezpečná souběžnost. |
size_type |
Typ, který spočítá počet prvků v souběžné vektor. |
value_type |
Typ, který představuje datový typ uložený v souběžné vektoru. |
Veřejné konstruktory
Název | Popis |
---|---|
concurrent_vector | Přetíženo. Vytvoří souběžný vektor. |
~concurrent_vector Destruktor | Vymaže všechny prvky a zničí tento souběžný vektor. |
Veřejné metody
Název | Popis |
---|---|
přiřadit | Přetíženo. Vymaže prvky souběžného vektoru a přiřadí k němu _N buď kopie _Item , nebo hodnoty určené rozsahem iterátoru [ _Begin , _End ). Tato metoda není bezpečná pro souběžnost. |
u | Přetíženo. Poskytuje přístup k elementu v daném indexu v souběžné vektoru. Tato metoda je pro operace čtení bezpečná pro souběžnost a také při růstu vektoru, pokud jste zajistili, že hodnota _Index je menší než velikost souběžného vektoru. |
hřbet | Přetíženo. Vrátí odkaz nebo const odkaz na poslední prvek souběžného vektoru. Pokud je souběžný vektor prázdný, návratová hodnota není definována. Tato metoda je bezpečná pro souběžnost. |
začít | Přetíženo. Vrátí iterátor typu iterator nebo const_iterator na začátek souběžného vektoru. Tato metoda je bezpečná pro souběžnost. |
kapacita | Vrátí maximální velikost, na kterou může souběžný vektor růst, aniž by bylo nutné přidělit více paměti. Tato metoda je bezpečná pro souběžnost. |
cbegin | Vrátí iterátor typu const_iterator na začátek souběžného vektoru. Tato metoda je bezpečná pro souběžnost. |
cend | Vrátí iterátor typu const_iterator na konec souběžného vektoru. Tato metoda je bezpečná pro souběžnost. |
jasný | Vymaže všechny prvky v souběžných vektorech. Tato metoda není bezpečná pro souběžnost. |
crbegin | Vrátí iterátor typu const_reverse_iterator na začátek souběžného vektoru. Tato metoda je bezpečná pro souběžnost. |
crend | Vrátí iterátor typu const_reverse_iterator na konec souběžného vektoru. Tato metoda je bezpečná pro souběžnost. |
empty | Testuje, zda souběžný vektor je prázdný v době, kdy je volána tato metoda. Tato metoda je bezpečná pro souběžnost. |
konec | Přetíženo. Vrátí iterátor typu iterator nebo const_iterator na konec souběžného vektoru. Tato metoda je bezpečná pro souběžnost. |
fronta | Přetíženo. Vrátí odkaz nebo const odkaz na první prvek souběžného vektoru. Pokud je souběžný vektor prázdný, návratová hodnota není definována. Tato metoda je bezpečná pro souběžnost. |
get_allocator | Vrátí kopii alokátoru použitého k vytvoření souběžného vektoru. Tato metoda je bezpečná pro souběžnost. |
grow_by | Přetíženo. Tento souběžný vektor se rozrůstá podle _Delta prvků. Tato metoda je bezpečná pro souběžnost. |
grow_to_at_least | Tento souběžný vektor se zvětší, dokud nebude mít alespoň _N prvky. Tato metoda je bezpečná pro souběžnost. |
max_size | Vrátí maximální počet prvků, které může souběžný vektor obsahovat. Tato metoda je bezpečná pro souběžnost. |
push_back | Přetíženo. Připojí danou položku na konec souběžného vektoru. Tato metoda je bezpečná pro souběžnost. |
Rbegin | Přetíženo. Vrátí iterátor typu reverse_iterator nebo const_reverse_iterator na začátek souběžného vektoru. Tato metoda je bezpečná pro souběžnost. |
rvát | Přetíženo. Vrátí iterátor typu reverse_iterator nebo const_reverse_iterator na konec souběžného vektoru. Tato metoda je bezpečná pro souběžnost. |
rezerva | Přidělí dostatek místa pro zvětšení souběžného vektoru na velikost _N , aniž by bylo nutné později přidělit více paměti. Tato metoda není bezpečná pro souběžnost. |
změnit velikost | Přetíženo. Změní velikost souběžného vektoru na požadovanou velikost, podle potřeby odstraní nebo přidá prvky. Tato metoda není bezpečná pro souběžnost. |
shrink_to_fit | Zkomprimuje interní reprezentaci souběžného vektoru, aby se snížila fragmentace a optimalizovalo využití paměti. Tato metoda není bezpečná pro souběžnost. |
velikost | Vrátí počet prvků v souběžné vektoru. Tato metoda je bezpečná pro souběžnost. |
vyměnit | Prohodí obsah dvou souběžných vektorů. Tato metoda není bezpečná pro souběžnost. |
Veřejné operátory
Název | Popis |
---|---|
operator[] | Přetíženo. Poskytuje přístup k elementu v daném indexu v souběžné vektoru. Tato metoda je bezpečná pro operace čtení a také při růstu vektoru, pokud jste zajistili, že hodnota _Index je menší než velikost souběžného vektoru. |
operator= | Přetíženo. Přiřadí obsah jiného concurrent_vector objektu k tomuto objektu. Tato metoda není bezpečná pro souběžnost. |
Poznámky
Podrobné informace o concurrent_vector
třídě naleznete v tématu Paralelní kontejnery a objekty.
Hierarchie dědičnosti
_Concurrent_vector_base_v4
_Allocator_base
concurrent_vector
Požadavky
Hlavička: concurrent_vector.h
Namespace: souběžnost
přiřadit
Vymaže prvky souběžného vektoru a přiřadí k němu _N
buď kopie _Item
, nebo hodnoty určené rozsahem iterátoru [ _Begin
, _End
). Tato metoda není bezpečná pro souběžnost.
void assign(
size_type _N,
const_reference _Item);
template<class _InputIterator>
void assign(_InputIterator _Begin,
_InputIterator _End);
Parametry
_InputIterator
Typ zadaného iterátoru.
_N
Počet položek, které se mají zkopírovat do souběžného vektoru.
_Položka
Odkaz na hodnotu použitou k vyplnění souběžného vektoru.
_Začít
Iterátor na první prvek zdrojového rozsahu.
_Konec
Iterátor na jeden za posledním prvkem zdrojového rozsahu.
Poznámky
assign
není souběžnost bezpečná. Při volání této metody je nutné zajistit, aby žádné další vlákna vyvolávala metody souběžného vektoru.
v
Poskytuje přístup k elementu v daném indexu v souběžné vektoru. Tato metoda je pro operace čtení bezpečná pro souběžnost a také při růstu vektoru, pokud jste zajistili, že hodnota _Index
je menší než velikost souběžného vektoru.
reference at(size_type _Index);
const_reference at(size_type _Index) const;
Parametry
_Index
Index elementu, který se má načíst.
Návratová hodnota
Odkaz na položku v daném indexu.
Poznámky
Verze funkce at
, která vrací odkaz, const
nelze použít k souběžnému zápisu do elementu z různých vláken. K synchronizaci souběžných operací čtení a zápisu do stejného datového prvku by se měl použít jiný synchronizační objekt.
Metoda vyvolá out_of_range
, pokud _Index
je větší nebo rovna velikosti souběžného vektoru, a range_error
pokud je index pro poškozenou část vektoru. Podrobnosti o tom, jak se vektor může rozdělit, najdete v tématu Paralelní kontejnery a objekty.
Zpět
Vrátí odkaz nebo const
odkaz na poslední prvek souběžného vektoru. Pokud je souběžný vektor prázdný, návratová hodnota není definována. Tato metoda je bezpečná pro souběžnost.
reference back();
const_reference back() const;
Návratová hodnota
Odkaz nebo const
odkaz na poslední prvek souběžného vektoru.
začít
Vrátí iterátor typu iterator
nebo const_iterator
na začátek souběžného vektoru. Tato metoda je bezpečná pro souběžnost.
iterator begin();
const_iterator begin() const;
Návratová hodnota
Iterátor typu iterator
nebo const_iterator
na začátek souběžného vektoru.
capacity
Vrátí maximální velikost, na kterou může souběžný vektor růst, aniž by bylo nutné přidělit více paměti. Tato metoda je bezpečná pro souběžnost.
size_type capacity() const;
Návratová hodnota
Maximální velikost, na kterou může souběžný vektor růst, aniž by bylo nutné přidělit více paměti.
Poznámky
Na rozdíl od standardní knihovny vector
concurrent_vector
jazyka C++ objekt nepřesune existující prvky, pokud přidělí více paměti.
cbegin
Vrátí iterátor typu const_iterator
na začátek souběžného vektoru. Tato metoda je bezpečná pro souběžnost.
const_iterator cbegin() const;
Návratová hodnota
Iterátor typu const_iterator
na začátek souběžného vektoru.
cend
Vrátí iterátor typu const_iterator
na konec souběžného vektoru. Tato metoda je bezpečná pro souběžnost.
const_iterator cend() const;
Návratová hodnota
Iterátor typu const_iterator
na konec souběžného vektoru.
jasný
Vymaže všechny prvky v souběžných vektorech. Tato metoda není bezpečná pro souběžnost.
void clear();
Poznámky
clear
není souběžnost bezpečná. Při volání této metody je nutné zajistit, aby žádné další vlákna vyvolávala metody souběžného vektoru. clear
neobsahuje vnitřní pole. Chcete-li uvolnit vnitřní pole, zavolejte funkci shrink_to_fit
za clear
.
concurrent_vector
Vytvoří souběžný 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());
Parametry
M
Typ alokátoru zdrojového vektoru.
_InputIterator
Typ vstupního iterátoru.
_Hliník
Třída alokátoru, která se má použít s tímto objektem.
_Vektor
Zdrojový concurrent_vector
objekt ke zkopírování nebo přesunutí prvků.
_N
Počáteční kapacita objektu concurrent_vector
.
_Položka
Hodnota prvků v vytvořeném objektu.
_Začít
Pozice prvního prvku v rozsahu prvků, které se mají zkopírovat.
_Konec
Pozice prvního prvku nad rozsah prvků, které se mají zkopírovat.
Poznámky
Všechny konstruktory ukládají objekt _Al
alokátoru a inicializují vektor.
První konstruktor určuje prázdný počáteční vektor a explicitně určuje typ alokátoru. a použít.
Druhý a třetí konstruktory určují kopii souběžného vektoru _Vector
.
Čtvrtý konstruktor určuje přesunutí souběžného vektoru _Vector
.
Pátý konstruktor určuje opakování zadaného čísla ( _N
) prvků výchozí hodnoty pro třídu T
.
Šestý konstruktor určuje opakování ( _N
) prvků hodnoty _Item
.
Poslední konstruktor určuje hodnoty zadané rozsahem iterátoru [ _Begin
, _End
).
~concurrent_vector
Vymaže všechny prvky a zničí tento souběžný vektor.
~concurrent_vector();
crbegin
Vrátí iterátor typu const_reverse_iterator
na začátek souběžného vektoru. Tato metoda je bezpečná pro souběžnost.
const_reverse_iterator crbegin() const;
Návratová hodnota
Iterátor typu const_reverse_iterator
na začátek souběžného vektoru.
crend
Vrátí iterátor typu const_reverse_iterator
na konec souběžného vektoru. Tato metoda je bezpečná pro souběžnost.
const_reverse_iterator crend() const;
Návratová hodnota
Iterátor typu const_reverse_iterator
na konec souběžného vektoru.
empty
Testuje, zda souběžný vektor je prázdný v době, kdy je volána tato metoda. Tato metoda je bezpečná pro souběžnost.
bool empty() const;
Návratová hodnota
true
pokud byl vektor prázdný v okamžiku, kdy byla funkce volána, false
jinak.
end
Vrátí iterátor typu iterator
nebo const_iterator
na konec souběžného vektoru. Tato metoda je bezpečná pro souběžnost.
iterator end();
const_iterator end() const;
Návratová hodnota
Iterátor typu iterator
nebo const_iterator
na konec souběžného vektoru.
fronta
Vrátí odkaz nebo const
odkaz na první prvek souběžného vektoru. Pokud je souběžný vektor prázdný, návratová hodnota není definována. Tato metoda je bezpečná pro souběžnost.
reference front();
const_reference front() const;
Návratová hodnota
Odkaz nebo const
odkaz na první prvek souběžného vektoru.
get_allocator
Vrátí kopii alokátoru použitého k vytvoření souběžného vektoru. Tato metoda je bezpečná pro souběžnost.
allocator_type get_allocator() const;
Návratová hodnota
Kopie alokátoru použitého k vytvoření objektu concurrent_vector
.
grow_by
Tento souběžný vektor se rozrůstá podle _Delta
prvků. Tato metoda je bezpečná pro souběžnost.
iterator grow_by(
size_type _Delta);
iterator grow_by(
size_type _Delta,
const_reference _Item);
Parametry
_Delta
Počet prvků, které se mají připojit k objektu.
_Položka
Hodnota pro inicializaci nových prvků pomocí.
Návratová hodnota
Iterátor pro první připojenou položku.
Poznámky
Pokud _Item
není zadáno, jsou nové prvky vytvořené jako výchozí.
grow_to_at_least
Tento souběžný vektor se zvětší, dokud nebude mít alespoň _N
prvky. Tato metoda je bezpečná pro souběžnost.
iterator grow_to_at_least(size_type _N);
Parametry
_N
Nová minimální velikost objektu concurrent_vector
.
Návratová hodnota
Iterátor, který odkazuje na začátek připojené sekvence nebo na prvek v indexu _N
, pokud nebyly připojeny žádné prvky.
max_size
Vrátí maximální počet prvků, které může souběžný vektor obsahovat. Tato metoda je bezpečná pro souběžnost.
size_type max_size() const;
Návratová hodnota
Maximální počet prvků, které concurrent_vector
objekt může obsahovat.
operator=
Přiřadí obsah jiného concurrent_vector
objektu k tomuto objektu. Tato metoda není bezpečná pro souběžnost.
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 alokátoru zdrojového vektoru.
_Vektor
Zdrojový concurrent_vector
objekt.
Návratová hodnota
Odkaz na tento concurrent_vector
objekt.
operator[]
Poskytuje přístup k elementu v daném indexu v souběžné vektoru. Tato metoda je bezpečná pro operace čtení a také při růstu vektoru, pokud jste zajistili, že hodnota _Index
je menší než velikost souběžného vektoru.
reference operator[](size_type _index);
const_reference operator[](size_type _index) const;
Parametry
_Index
Index elementu, který se má načíst.
Návratová hodnota
Odkaz na položku v daném indexu.
Poznámky
Verze operator []
, která vrací odkaz, const
nelze použít k souběžnému zápisu do elementu z různých vláken. K synchronizaci souběžných operací čtení a zápisu do stejného datového prvku by se měl použít jiný synchronizační objekt.
Neprovádí se žádná kontrola hranic, aby se zajistilo, že _Index
je platný index do souběžného vektoru.
push_back
Připojí danou položku na konec souběžného vektoru. Tato metoda je bezpečná pro souběžnost.
iterator push_back(const_reference _Item);
iterator push_back(T&& _Item);
Parametry
_Položka
Hodnota, která se má připojit.
Návratová hodnota
Iterátor připojený k položce.
Rbegin
Vrátí iterátor typu reverse_iterator
nebo const_reverse_iterator
na začátek souběžného vektoru. Tato metoda je bezpečná pro souběžnost.
reverse_iterator rbegin();
const_reverse_iterator rbegin() const;
Návratová hodnota
Iterátor typu reverse_iterator
nebo const_reverse_iterator
na začátek souběžného vektoru.
rvát
Vrátí iterátor typu reverse_iterator
nebo const_reverse_iterator
na konec souběžného vektoru. Tato metoda je bezpečná pro souběžnost.
reverse_iterator rend();
const_reverse_iterator rend() const;
Návratová hodnota
Iterátor typu reverse_iterator
nebo const_reverse_iterator
na konec souběžného vektoru.
rezerva
Přidělí dostatek místa pro zvětšení souběžného vektoru na velikost _N
, aniž by bylo nutné později přidělit více paměti. Tato metoda není bezpečná pro souběžnost.
void reserve(size_type _N);
Parametry
_N
Počet prvků, pro které je potřeba rezervovat místo.
Poznámky
reserve
není souběžnost bezpečná. Při volání této metody je nutné zajistit, aby žádné další vlákna vyvolávala metody souběžného vektoru. Kapacita souběžného vektoru po vrácení metody může být větší než požadovaná rezervace.
změna velikosti
Změní velikost souběžného vektoru na požadovanou velikost, podle potřeby odstraní nebo přidá prvky. Tato metoda není bezpečná pro souběžnost.
void resize(
size_type _N);
void resize(
size_type _N,
const T& val);
Parametry
_N
Nová velikost concurrent_vector.
Val
Hodnota nových prvků přidaných do vektoru, pokud je nová velikost větší než původní velikost. Pokud je hodnota vynechána, nové objekty jsou přiřazeny výchozí hodnotu pro jejich typ.
Poznámky
Pokud je velikost kontejneru menší než požadovaná velikost, přidají se do vektoru prvky, dokud nedosáhne požadované velikosti. Pokud je velikost kontejneru větší než požadovaná velikost, odstraní se prvky nejblíže ke konci kontejneru, dokud kontejner nedosáhne velikosti _N
. Pokud je současná velikost kontejneru stejná jako požadovaná velikost, není provedena žádná akce.
resize
není bezpečná souběžnost. Při volání této metody je nutné zajistit, aby žádné další vlákna vyvolávala metody souběžného vektoru.
shrink_to_fit
Zkomprimuje interní reprezentaci souběžného vektoru, aby se snížila fragmentace a optimalizovalo využití paměti. Tato metoda není bezpečná pro souběžnost.
void shrink_to_fit();
Poznámky
Tato metoda interně znovu přidělí prvky přesunu paměti a zneplatní všechny iterátory. shrink_to_fit
není souběžnost bezpečná. Při volání této funkce je nutné zajistit, aby žádné další vlákna vyvolávaly metody souběžného vektoru.
size
Vrátí počet prvků v souběžné vektoru. Tato metoda je bezpečná pro souběžnost.
size_type size() const;
Návratová hodnota
Počet prvků v tomto concurrent_vector
objektu.
Poznámky
Vrácená velikost je zaručena zahrnout všechny prvky připojené voláním funkce push_back
, nebo zvětšit operace, které byly dokončeny před vyvoláním této metody. Může však také zahrnovat prvky, které jsou přiděleny, ale stále ve konstrukci souběžnými voláními některé z metod růstu.
swap
Prohodí obsah dvou souběžných vektorů. Tato metoda není bezpečná pro souběžnost.
void swap(concurrent_vector& _Vector);
Parametry
_Vektor
Objekt concurrent_vector
pro prohození obsahu.