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_priority_queue je kontejner, který umožňuje více vláknům souběžně vkládat a odebírat položky. Položky jsou odebírány v pořadí podle priority, přičemž prioritu určuje funktor dodávaný jako argument šablony.
Syntaxe
template <typename T,
typename _Compare = std::less<T>,
typename _Ax = std::allocator<T>>
class concurrent_priority_queue;
Parametry
T
Datový typ prvků, které mají být uloženy ve frontě priority.
_Porovnat
Typ objektu funkce, který může porovnat dvě hodnoty prvků jako klíče řazení k určení jejich relativního pořadí ve frontě priority. Tento argument je nepovinný a binární predikát less<T> je výchozí hodnota.
_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ěžnou prioritní frontu. 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ěžnou prioritní frontu. |
const_reference |
Typ, který představuje konstantní odkaz na prvek uloženého typu v souběžné prioritní frontě. |
reference |
Typ, který představuje odkaz na prvek typu uloženého ve frontě souběžné priority. |
size_type |
Typ, který spočítá počet prvků ve frontě souběžné priority. |
value_type |
Typ, který představuje datový typ uložený ve frontě souběžné priority. |
Veřejné konstruktory
| Název | Popis |
|---|---|
| concurrent_priority_queue | Přetíženo. Vytvoří souběžnou prioritní frontu. |
Veřejné metody
| Název | Popis |
|---|---|
| jasný | Vymaže všechny prvky v souběžné prioritě. Tato metoda není bezpečná pro souběžnost. |
| prázdný | Testuje, jestli je souběžná prioritní fronta v době, kdy se tato metoda volá, prázdná. 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é prioritní fronty. Tato metoda je bezpečná při souběžném zpracování. |
| push | Přetíženo. Přidá prvek do souběžné prioritní fronty. Tato metoda je bezpečná při souběžném zpracování. |
| velikost | Vrátí počet prvků ve frontě souběžné priority. Tato metoda je bezpečná při souběžném zpracování. |
| vyměnit | Prohodí obsah dvou souběžných front s prioritou. Tato metoda není bezpečná pro souběžnost. |
| try_pop | Odebere a vrátí prvek nejvyšší priority z fronty, pokud je fronta neprázdná. Tato metoda je bezpečná pro souběžnost. |
Veřejné operátory
| Název | Popis |
|---|---|
| operator= | Přetíženo. Přiřadí obsah jiného concurrent_priority_queue objektu k tomuto objektu. Tato metoda není bezpečná pro souběžnost. |
Poznámky
Podrobné informace o concurrent_priority_queue třídě naleznete v tématu Paralelní kontejnery a objekty.
Hierarchie dědičnosti
concurrent_priority_queue
Požadavky
Hlavička: concurrent_priority_queue.h
Obor názvů: souběžnost
odznačit
Vymaže všechny prvky v souběžné prioritě. 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 nevyvolávala metody ve prioritní souběžné frontě.
clear neuvolňuje paměť.
concurrent_priority_queue
Vytvoří souběžnou prioritní frontu.
explicit concurrent_priority_queue(
const allocator_type& _Al = allocator_type());
explicit concurrent_priority_queue(
size_type _Init_capacity,
const allocator_type& _Al = allocator_type());
template<typename _InputIterator>
concurrent_priority_queue(_InputIterator _Begin,
_InputIterator _End,
const allocator_type& _Al = allocator_type());
concurrent_priority_queue(
const concurrent_priority_queue& _Src);
concurrent_priority_queue(
const concurrent_priority_queue& _Src,
const allocator_type& _Al);
concurrent_priority_queue(
concurrent_priority_queue&& _Src);
concurrent_priority_queue(
concurrent_priority_queue&& _Src,
const allocator_type& _Al);
Parametry
_InputIterator
Typ vstupního iterátoru.
_Hliník
Třída alokátoru, která se má použít s tímto objektem.
_Init_capacity
Počáteční kapacita objektu concurrent_priority_queue .
_Začít
Pozice prvního prvku v oblasti prvků, které se mají zkopírovat.
_Konec
Pozice prvního prvku nad rozsah prvků, které se mají zkopírovat.
_Src
Zdrojový concurrent_priority_queue objekt ke zkopírování nebo přesunutí prvků.
Poznámky
Všechny konstruktory ukládají objekt _Al alokátoru a inicializují frontu priority.
První konstruktor určuje prázdnou počáteční prioritní frontu a volitelně určuje alokátor.
Druhý konstruktor určuje frontu priority s počáteční kapacitou _Init_capacity a volitelně určuje alokátor.
Třetí konstruktor určuje hodnoty zadané rozsahem iterátoru [ _Begin, _End) a volitelně určuje alokátor.
Čtvrtý a pátý konstruktor určují kopii fronty s prioritou _Src.
Šestý a sedmý konstruktor určují přesun prioritní _Src fronty.
prázdný
Testuje, jestli je souběžná prioritní fronta v době, kdy se tato metoda volá, prázdná. Tato metoda je bezpečná při souběžném zpracování.
bool empty() const;
Návratová hodnota
true pokud byla fronta priority v okamžiku, kdy byla funkce volána, prázdná, false v opačném případě.
get_allocator
Vrátí kopii alokátoru použitého k vytvoření souběžné prioritní fronty. 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_priority_queue .
operator=
Přiřadí obsah jiného concurrent_priority_queue objektu k tomuto objektu. Tato metoda není bezpečná pro souběžnost.
concurrent_priority_queue& operator= (const concurrent_priority_queue& _Src);
concurrent_priority_queue& operator= (concurrent_priority_queue&& _Src);
Parametry
_Src
Zdrojový concurrent_priority_queue objekt.
Návratová hodnota
Odkaz na tento concurrent_priority_queue objekt.
nabídka
Přidá prvek do souběžné prioritní fronty. Tato metoda je bezpečná při souběžném zpracování.
void push(const value_type& _Elem);
void push(value_type&& _Elem);
Parametry
_Elem
Prvek, který se má přidat do souběžné prioritní fronty.
velikost
Vrátí počet prvků ve frontě souběžné priority. 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_priority_queue objektu.
Poznámky
Vrácená velikost zaručuje zahrnutí všech prvků přidaných voláním funkce push. Nemusí však odrážet výsledky čekajících souběžných operací.
zaměnit
Prohodí obsah dvou souběžných front s prioritou. Tato metoda není bezpečná pro souběžnost.
void swap(concurrent_priority_queue& _Queue);
Parametry
_Fronta
Objekt concurrent_priority_queue, se kterým se vymění obsah.
try_pop
Odebere a vrátí prvek nejvyšší priority z fronty, pokud je fronta neprázdná. Tato metoda je bezpečná při souběžném zpracování.
bool try_pop(reference _Elem);
Parametry
_Elem
Odkaz na proměnnou, která se naplní elementem s nejvyšší prioritou, pokud je fronta neprázdná.
Návratová hodnota
true pokud byla hodnota přepnuta, false jinak.