Sdílet prostřednictvím


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.

_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é definice typedef

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

Jméno popis
concurrent_priority_queue Přetíženo. Vytvoří souběžnou prioritní frontu.

Veřejné metody

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

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

_Al
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 .

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;

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

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

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

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

_Fronty
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á.

Vrácená hodnota

true pokud byla hodnota přepnuta, false jinak.

Viz také

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