concurrent_priority_queue – třída
Třída concurrent_priority_queue
je kontejner, který umožňuje více vláken souběžné nabízení a pop položek. Položky se přepnou v pořadí priority, kde prioritu určuje functor zadaný jako argument šablony.
Syntaxe
template <typename T,
typename _Compare= std::less<T>,
typename _Ax = std::allocator<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.
_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ěžnou prioritní frontu. 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ěžnou prioritní frontu. |
const_reference |
Typ, který představuje const odkaz na prvek typu uloženého 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. |
empty | Testuje, jestli je souběžná prioritní fronta v době, kdy se tato metoda volá, prázdná. Tato metoda je bezpečná pro souběžnost. |
get_allocator | Vrátí kopii alokátoru použitého k vytvoření souběžné prioritní fronty. Tato metoda je bezpečná pro souběžnost. |
push | Přetíženo. Přidá prvek do souběžné prioritní fronty. Tato metoda je bezpečná pro souběžnost. |
velikost | Vrátí počet prvků ve frontě souběžné priority. Tato metoda je bezpečná pro souběžnost. |
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
jasný
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 vyvolávala metody ve frontě souběžné priority. clear
neuvolní 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čuje kopii fronty _Src
priority .
Šestý a sedmý konstruktor určuje přesun fronty _Src
priority .
empty
Testuje, jestli je souběžná prioritní fronta v době, kdy se tato metoda volá, prázdná. Tato metoda je bezpečná pro souběžnost.
bool empty() const;
Návratová hodnota
true
pokud fronta priority byla v okamžiku, kdy byla funkce volána, false
v opačném případě prázdná.
get_allocator
Vrátí kopii alokátoru použitého k vytvoření souběžné prioritní fronty. 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_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.
push
Přidá prvek do souběžné prioritní fronty. Tato metoda je bezpečná pro souběžnost.
void push(const value_type& _Elem);
void push(value_type&& _Elem);
Parametry
_Elem
Prvek, který se má přidat do souběžné prioritní fronty.
size
Vrátí počet prvků ve frontě souběžné priority. Tato metoda je bezpečná pro souběžnost.
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í.
swap
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
pro prohození obsahu.
try_pop
Odebere a vrátí prvek nejvyšší priority z fronty, pokud je fronta neprázdná. Tato metoda je bezpečná pro souběžnost.
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.