Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Klasa concurrent_priority_queue jest kontenerem, który umożliwia jednoczesne wypychanie wielu wątków i wypychanie elementów podręcznych. Elementy są zwinięte w kolejności priorytetu, w której priorytet jest określany przez functor dostarczony jako argument szablonu.
Składnia
template <typename T,
typename _Compare = std::less<T>,
typename _Ax = std::allocator<T>>
class concurrent_priority_queue;
Parametry
T
Typ danych elementów, które mają być przechowywane w kolejce priorytetów.
_Porównywać
Typ obiektu funkcji, który może porównać dwie wartości elementu jako klucze sortowania, aby określić ich względną kolejność w kolejce priorytetu. Ten argument jest opcjonalny, a predykat less<T> binarny jest wartością domyślną.
_Siekiera
Typ reprezentujący przechowywany obiekt alokatora, który hermetyzuje szczegóły dotyczące alokacji i cofania przydziału pamięci dla kolejki priorytetu współbieżnego. Ten argument jest opcjonalny, a wartość domyślna to allocator<T>.
Elementy członkowskie
Definicje typów publicznych
| Nazwa/nazwisko | opis |
|---|---|
allocator_type |
Typ reprezentujący klasę alokatora dla kolejki priorytetu współbieżnego. |
const_reference |
Typ reprezentujący odwołanie const do elementu typu przechowywanego w kolejce priorytetu współbieżnego. |
reference |
Typ reprezentujący odwołanie do elementu typu przechowywanego w kolejce priorytetu współbieżnego. |
size_type |
Typ, który zlicza elementy w kolejce priorytetu współbieżnego. |
value_type |
Typ reprezentujący typ danych przechowywany w kolejce priorytetu współbieżnego. |
Konstruktory publiczne
| Nazwa/nazwisko | opis |
|---|---|
| concurrent_priority_queue | Przeciążone. Tworzy kolejkę priorytetu współbieżnego. |
Metody publiczne
| Nazwa/nazwisko | opis |
|---|---|
| jasny | Usuwa wszystkie elementy z priorytetu współbieżnego. Ta metoda nie jest bezpieczna współbieżności. |
| pusty | Sprawdza, czy kolejka priorytetu współbieżnego jest pusta w momencie wywołania tej metody. Ta metoda jest bezpieczna współbieżności. |
| get_allocator | Zwraca kopię alokatora używanego do konstruowania kolejki priorytetu współbieżnego. Ta metoda jest bezpieczna współbieżności. |
| wypychania | Przeciążone. Dodaje element do kolejki priorytetu współbieżnego. Ta metoda jest bezpieczna współbieżności. |
| rozmiar | Zwraca liczbę elementów w kolejce priorytetu współbieżnego. Ta metoda jest bezpieczna współbieżności. |
| zamiana | Zamienia zawartość dwóch współbieżnych kolejek priorytetowych. Ta metoda nie jest bezpieczna współbieżności. |
| try_pop | Usuwa i zwraca element o najwyższym priorytcie z kolejki, jeśli kolejka nie jest pusta. Ta metoda jest bezpieczna współbieżności. |
Operatory publiczne
| Nazwa/nazwisko | opis |
|---|---|
| operator = | Przeciążone. Przypisuje zawartość innego concurrent_priority_queue obiektu do tego obiektu. Ta metoda nie jest bezpieczna współbieżności. |
Uwagi
Aby uzyskać szczegółowe informacje na concurrent_priority_queue temat klasy, zobacz Parallel Containers and Objects (Kontenery równoległe i obiekty).
Hierarchia dziedziczenia
concurrent_priority_queue
Wymagania
Nagłówek: concurrent_priority_queue.h
Przestrzeń nazw: współbieżność
jasny
Usuwa wszystkie elementy z priorytetu współbieżnego. Ta metoda nie jest bezpieczna współbieżności.
void clear();
Uwagi
clear nie jest bezpieczny dla współbieżności. Należy upewnić się, że podczas wywoływania tej metody nie są wywoływane żadne inne wątki w kolejce priorytetu współbieżnego.
clear nie zwalnia pamięci.
concurrent_priority_queue
Tworzy kolejkę priorytetu współbieżnego.
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 iteratora wejściowego.
_Al
Klasa alokatora do wykorzystania z tym obiektem.
_Init_capacity
Początkowa pojemność concurrent_priority_queue obiektu.
_Zaczynać
Położenie pierwszego elementu w zakresie elementów do skopiowania.
_Koniec
Położenie pierwszego elementu poza zakresem elementów do skopiowania.
_Src
Obiekt źródłowy concurrent_priority_queue do kopiowania lub przenoszenia elementów.
Uwagi
Wszystkie konstruktory przechowują obiekt _Al alokatora i inicjują kolejkę priorytetu.
Pierwszy konstruktor określa pustą kolejkę priorytetu początkowego i opcjonalnie określa alokator.
Drugi konstruktor określa kolejkę priorytetu z początkową pojemnością _Init_capacity i opcjonalnie określa alokator.
Trzeci konstruktor określa wartości dostarczone przez zakres iteratora [ _Begin, _End) i opcjonalnie określa alokator.
Czwarte i piąte konstruktory określają kopię kolejki _Srcpriorytetu .
Szóste i siódme konstruktory określają ruch kolejki _Srcpriorytetu .
pusty
Sprawdza, czy kolejka priorytetu współbieżnego jest pusta w momencie wywołania tej metody. Ta metoda jest bezpieczna współbieżności.
bool empty() const;
Wartość zwracana
true jeśli kolejka priorytetu była pusta w momencie wywołania funkcji, false w przeciwnym razie.
get_allocator
Zwraca kopię alokatora używanego do konstruowania kolejki priorytetu współbieżnego. Ta metoda jest bezpieczna współbieżności.
allocator_type get_allocator() const;
Wartość zwracana
Kopia alokatora używanego do konstruowania concurrent_priority_queue obiektu.
operator =
Przypisuje zawartość innego concurrent_priority_queue obiektu do tego obiektu. Ta metoda nie jest bezpieczna współbieżności.
concurrent_priority_queue& operator= (const concurrent_priority_queue& _Src);
concurrent_priority_queue& operator= (concurrent_priority_queue&& _Src);
Parametry
_Src
Obiekt źródłowy concurrent_priority_queue .
Wartość zwracana
Odwołanie do tego concurrent_priority_queue obiektu.
pchać
Dodaje element do kolejki priorytetu współbieżnego. Ta metoda jest bezpieczna współbieżności.
void push(const value_type& _Elem);
void push(value_type&& _Elem);
Parametry
_Elem
Element, który ma zostać dodany do kolejki priorytetu współbieżnego.
rozmiar
Zwraca liczbę elementów w kolejce priorytetu współbieżnego. Ta metoda jest bezpieczna współbieżności.
size_type size() const;
Wartość zwracana
Liczba elementów w tym concurrent_priority_queue obiekcie.
Uwagi
Zwrócony rozmiar jest gwarantowany, aby uwzględnić wszystkie elementy dodane przez wywołania do funkcji push. Jednak może nie odzwierciedlać wyników oczekujących operacji współbieżnych.
zamiana
Zamienia zawartość dwóch współbieżnych kolejek priorytetowych. Ta metoda nie jest bezpieczna współbieżności.
void swap(concurrent_priority_queue& _Queue);
Parametry
_Kolejka
Obiekt concurrent_priority_queue do zamiany zawartości na.
try_pop
Usuwa i zwraca element o najwyższym priorytcie z kolejki, jeśli kolejka nie jest pusta. Ta metoda jest bezpieczna współbieżności.
bool try_pop(reference _Elem);
Parametry
_Elem
Odwołanie do zmiennej, która zostanie wypełniona elementem o najwyższym priorytcie, jeśli kolejka nie jest pusta.
Wartość zwracana
true jeśli wartość została wyskoczona, false w przeciwnym razie.
Zobacz też
Przestrzeń nazw współbieżności
Równoległe kontenery oraz obiekty