Sdílet prostřednictvím


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.

_Ax
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

Jméno 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

Jméno 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

Jméno 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.
Na 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.
Zpět 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.
Přední 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.
Rend 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.
Rezervy 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.
Swap Prohodí obsah dvou souběžných vektorů. Tato metoda není bezpečná pro souběžnost.

Veřejné operátory

Jméno 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

Obor názvů: 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žky
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.

Vrácená 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;

Vrácená 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;

Vrácená 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;

Vrácená 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 vectorconcurrent_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;

Vrácená 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;

Vrácená 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.

_Al
Třída alokátoru, která se má použít s tímto objektem.

_Vektorové
Zdrojový concurrent_vector objekt ke zkopírování nebo přesunutí prvků.

_N
Počáteční kapacita objektu concurrent_vector .

_Položky
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;

Vrácená 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;

Vrácená 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;

Vrácená 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;

Vrácená hodnota

Iterátor typu iterator nebo const_iterator na konec souběžného vektoru.

Přední

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;

Vrácená 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;

Vrácená 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žky
Hodnota pro inicializaci nových prvků pomocí.

Vrácená 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 .

Vrácená 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;

Vrácená 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.

_Vektorové
Zdrojový concurrent_vector objekt.

Vrácená 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.

Vrácená 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žky
Hodnota, která se má připojit.

Vrácená 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;

Vrácená hodnota

Iterátor typu reverse_iterator nebo const_reverse_iterator na začátek souběžného vektoru.

Rend

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;

Vrácená hodnota

Iterátor typu reverse_iterator nebo const_reverse_iterator na konec souběžného vektoru.

Rezervy

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;

Vrácená 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

_Vektorové
Objekt concurrent_vector pro prohození obsahu.

Viz také

concurrency – obor názvů
Paralelní kontejnery a objekty