Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Třída concurrent_vector je sekvenční třída kontejneru, která umožňuje náhodný přístup k libovolnému prvku. Umožňuje vykonávání operací bezpečně s ohledem na souběžnost při přidávání, přístupu k jednotlivým prvkům, přístupu k iterátoru a procházení iterátorem. 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, zapouzdřující 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é typové definice
| 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, jenž umožňuje čtení const prvku ve souběžném vektoru. |
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ém vektoru pro čtení a provádění operací const. |
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á z hlediska konkurence. |
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á při souběžném přístupu. |
size_type |
Typ, který spočítá počet prvků v souběžném vektoru. |
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 na daném indexu ve současném 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. Vrací referenci nebo const referenci na poslední prvek paralelního vektoru. Pokud je souběžný vektor prázdný, návratová hodnota není definována. Tato metoda je bezpečná při souběžném zpracování. |
| 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á při souběžném zpracování. |
| 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á při souběžném zpracování. |
| cbegin | Vrátí iterátor typu const_iterator na začátek souběžného vektoru. Tato metoda je bezpečná při souběžném zpracování. |
| cend | Vrátí iterátor typu const_iterator na konec souběžného vektoru. Tato metoda je bezpečná při souběžném zpracování. |
| 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á při souběžném zpracování. |
| crend | Vrátí iterátor typu const_reverse_iterator na konec souběžného vektoru. Tato metoda je bezpečná při souběžném zpracování. |
| prázdný | Testuje, zda souběžný vektor je prázdný v době, kdy je volána tato metoda. Tato metoda je bezpečná při souběžném zpracování. |
| konec | Přetíženo. Vrátí iterátor typu iterator nebo const_iterator na konec souběžného vektoru. Tato metoda je bezpečná při souběžném zpracování. |
| přední | Přetíženo. Vrátí referenci nebo const referenci na první položku souběžného vektoru. Pokud je souběžný vektor prázdný, návratová hodnota není definována. Tato metoda je bezpečná při souběžném zpracování. |
| get_allocator | Vrátí kopii alokátoru použitého k vytvoření souběžného vektoru. Tato metoda je bezpečná při souběžném zpracování. |
| grow_by | Přetíženo. Tento souběžný vektor se rozrůstá podle _Delta prvků. Tato metoda je bezpečná při souběžném zpracování. |
| narůst_na_alespoň | Tento souběžný vektor se zvětší, dokud nebude mít alespoň _N prvky. Tato metoda je bezpečná při souběžném zpracování. |
| max_size | Vrátí maximální počet prvků, které může souběžný vektor obsahovat. Tato metoda je bezpečná při souběžném zpracování. |
| push_back | Přetíženo. Připojí danou položku na konec souběžného vektoru. Tato metoda je bezpečná při souběžném zpracování. |
| 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á při souběžném zpracování. |
| trhat | 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á při souběžném zpracování. |
| 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á při souběžném zpracování. |
| 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 na daném indexu ve současném 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ž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 na daném indexu ve současném 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 prvku, který má být načten.
Návratová hodnota
Odkaz na položku v daném indexu.
Poznámky
Verze funkce at, která vrací ne-const odkaz, 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
Vrací referenci nebo const referenci na poslední prvek paralelního vektoru. Pokud je souběžný vektor prázdný, návratová hodnota není definována. Tato metoda je bezpečná při souběžném zpracování.
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á při souběžném zpracování.
iterator begin();
const_iterator begin() const;
Návratová hodnota
Iterátor typu iterator nebo const_iterator na začátek souběžného vektoru.
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á při souběžném zpracování.
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 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á při souběžném zpracování.
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á při souběžném zpracování.
const_iterator cend() const;
Návratová hodnota
Iterátor typu const_iterator na konec souběžného vektoru.
odznačit
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 neuvolňuje 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. k použití
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 třídy 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á při souběžném zpracování.
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á při souběžném zpracování.
const_reverse_iterator crend() const;
Návratová hodnota
Iterátor typu const_reverse_iterator na konec souběžného vektoru.
prázdný
Testuje, zda souběžný vektor je prázdný v době, kdy je volána tato metoda. Tato metoda je bezpečná při souběžném zpracování.
bool empty() const;
Návratová hodnota
true pokud byl vektor prázdný v okamžiku, kdy byla funkce volána, false jinak.
konec
Vrátí iterátor typu iterator nebo const_iterator na konec souběžného vektoru. Tato metoda je bezpečná při souběžném zpracování.
iterator end();
const_iterator end() const;
Návratová hodnota
Iterátor typu iterator nebo const_iterator na konec souběžného vektoru.
přední část
Vrátí referenci nebo const referenci na první položku souběžného vektoru. Pokud je souběžný vektor prázdný, návratová hodnota není definována. Tato metoda je bezpečná při souběžném zpracování.
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á při souběžném zpracování.
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á při souběžném zpracování.
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ů.
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í.
růst_alespoň_na
Tento souběžný vektor se zvětší, dokud nebude mít alespoň _N prvky. Tato metoda je bezpečná při souběžném zpracování.
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.
maximální_velikost
Vrátí maximální počet prvků, které může souběžný vektor obsahovat. Tato metoda je bezpečná při souběžném zpracování.
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 na daném indexu ve současném 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 prvku, který má být načten.
Návratová hodnota
Odkaz na položku v daném indexu.
Poznámky
Verze operator [], která vrací ne-const odkaz, nelze použít k tomu, aby se souběžně zapisovalo do prvku 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á při souběžném zpracování.
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 k nově přidané 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á při souběžném zpracování.
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.
trhat
Vrátí iterátor typu reverse_iterator nebo const_reverse_iterator na konec souběžného vektoru. Tato metoda je bezpečná při souběžném zpracování.
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 poté, co metoda vrátí, může být větší než požadovaná rezervovaná kapacita.
změnit velikost
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é pro souběžné použití. Při volání této metody je nutné zajistit, aby žádné další vlákna vyvolávala metody souběžného vektoru.
zmenšit_na_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ě nově přidělí paměť, přesune prvky 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.
velikost
Vrátí počet prvků v souběžné vektoru. Tato metoda je bezpečná při souběžném zpracování.
size_type size() const;
Návratová hodnota
Počet prvků v tomto concurrent_vector objektu.
Poznámky
Je zaručeno, že vrácená velikost zahrnuje všechny prvky připojené voláním funkce push_back, nebo rozšiřovací 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 fázi konstrukce souběžnými voláními jakékoli z metod růstu.
zaměnit
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, se kterým se vymění obsah.