concurrent_priority_queue — Klasa
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>
>,
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ównać
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ą.
_Ax
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>
.
Członkowie
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 |
---|---|
Wyczyść | Usuwa wszystkie elementy z priorytetu współbieżnego. Ta metoda nie jest bezpieczna współbieżności. |
empty | 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. |
push | 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. |
Wymiany | 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ść
Wyczyść
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.
_Rozpocząć
Położenie pierwszego elementu w zakresie elementów do skopiowania.
_Końcu
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 _Src
priorytetu .
Szóste i siódme konstruktory określają ruch kolejki _Src
priorytetu .
empty
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.
push
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.
size
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.
swap
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
_Kolejki
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
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla