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á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>>
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. |
| prázdný | 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. |
| tlačit | 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 _Srcpriority .
Šestý a sedmý konstruktor určuje přesun fronty _Srcpriority .
prázdný
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.
tlačit
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.
velikost
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í.
vymě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 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.