Share via


Classe concurrent_priority_queue

La classe concurrent_priority_queue è un contenitore che consente a più thread di inserire e togliere elementi contemporaneamente. Gli elementi vengono prelevati secondo un ordine di priorità dove la priorità è determinata da una funzione fornita come argomento del modello.

Sintassi

template <typename T,
    typename _Compare= std::less<T>,
    typename _Ax = std::allocator<T>
>,
    typename _Ax = std::allocator<T>> class concurrent_priority_queue;

Parametri

T
Tipo di dati degli elementi da archiviare nella coda di priorità.

_Confrontare
Tipo dell'oggetto funzione tramite cui è possibile confrontare i valori di due elementi come chiavi di ordinamento per determinarne l'ordine relativo nella coda di priorità. Questo argomento è facoltativo e il predicato binario less<T> rappresenta il valore predefinito.

_Ax
Tipo che rappresenta l'oggetto allocatore archiviato in cui sono inclusi i dettagli sull'allocazione e sulla deallocazione di memoria per la coda di priorità simultanea. Questo argomento è facoltativo e il valore predefinito è allocator<T>.

Membri

Typedef pubblici

Nome Descrizione
allocator_type Tipo che rappresenta la classe dell'allocatore per la coda di priorità simultanea.
const_reference Tipo che rappresenta un riferimento const a un elemento del tipo archiviato in una coda di priorità simultanea.
reference Tipo che rappresenta un riferimento a un elemento del tipo archiviato in una coda di priorità simultanea.
size_type Tipo che conta il numero di elementi in una coda di priorità simultanea.
value_type Tipo che rappresenta il tipo di dati archiviati in una coda di priorità simultanea.

Costruttori pubblici

Nome Descrizione
concurrent_priority_queue Con overload. Costruisce una coda di priorità simultanea.

Metodi pubblici

Nome Descrizione
deselezionare Cancella tutti gli elementi nella coda di priorità simultanea. Questo metodo non è sicuro per la concorrenza.
empty Testa se la coda di priorità simultanea è vuota nel momento in cui questo metodo viene chiamato. Questo metodo è indipendente dalla concorrenza.
get_allocator Restituisce una copia dell'allocatore utilizzato per costruire la coda di priorità simultanea. Questo metodo è indipendente dalla concorrenza.
push Con overload. Aggiunge un elemento alla coda di priorità simultanea. Questo metodo è indipendente dalla concorrenza.
size Restituisce il numero di elementi presenti nella coda di priorità simultanea. Questo metodo è indipendente dalla concorrenza.
swap Scambia il contenuto di due code di priorità simultanee. Questo metodo non è sicuro per la concorrenza.
try_pop Rimuove e restituisce l'elemento con la priorità più elevata dalla coda se quest'ultima non è vuota. Questo metodo è indipendente dalla concorrenza.

Operatori pubblici

Nome Descrizione
operator= Con overload. Assegna il contenuto di un altro concurrent_priority_queue oggetto a questo oggetto. Questo metodo non è sicuro per la concorrenza.

Osservazioni:

Per informazioni dettagliate sulla concurrent_priority_queue classe , vedere Contenitori e oggetti paralleli.

Gerarchia di ereditarietà

concurrent_priority_queue

Requisiti

Intestazione: concurrent_priority_queue.h

Spazio dei nomi: Concurrency

clear

Cancella tutti gli elementi nella coda di priorità simultanea. Questo metodo non è sicuro per la concorrenza.

void clear();

Osservazioni:

clear non è indipendente dalla concorrenza. È necessario assicurarsi che nessun altro thread richiami metodi nella coda di priorità simultanea quando si chiama questo metodo. clear non libera memoria.

concurrent_priority_queue

Costruisce una coda di priorità simultanea.

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);

Parametri

_InputIterator
Tipo di iteratore di input.

_Al
Classe Allocator da usare con questo oggetto.

_Init_capacity
Capacità iniziale dell'oggetto concurrent_priority_queue.

_Iniziare
Posizione del primo elemento nell'intervallo di elementi da copiare.

_Fine
Posizione del primo elemento oltre l'intervallo di elementi da copiare.

_Src
Oggetto concurrent_priority_queue di origine da cui copiare o spostare elementi.

Osservazioni:

Tutti i costruttori archiviano un oggetto _Al allocatore e inizializzano la coda di priorità.

Il primo costruttore specifica una coda di priorità iniziale vuota e, facoltativamente, specifica un allocatore.

Il secondo costruttore specifica una coda di priorità con una capacità _Init_capacity iniziale e, facoltativamente, specifica un allocatore.

Il terzo costruttore specifica i valori forniti dall'intervallo di iteratori [ _Begin, ) e, facoltativamente, _Endspecifica un allocatore.

Il quarto e il quinto costruttore specificano una copia della coda _Srcdi priorità .

Il sesto e il settimo costruttore specificano uno spostamento della coda _Srcdi priorità .

empty

Testa se la coda di priorità simultanea è vuota nel momento in cui questo metodo viene chiamato. Questo metodo è indipendente dalla concorrenza.

bool empty() const;

Valore restituito

true se la coda di priorità è vuota al momento della chiamata della funzione, false in caso contrario.

get_allocator

Restituisce una copia dell'allocatore utilizzato per costruire la coda di priorità simultanea. Questo metodo è indipendente dalla concorrenza.

allocator_type get_allocator() const;

Valore restituito

Copia dell'allocatore utilizzato per costruire l'oggetto concurrent_priority_queue .

operator=

Assegna il contenuto di un altro concurrent_priority_queue oggetto a questo oggetto. Questo metodo non è sicuro per la concorrenza.

concurrent_priority_queue& operator= (const concurrent_priority_queue& _Src);

concurrent_priority_queue& operator= (concurrent_priority_queue&& _Src);

Parametri

_Src
Oggetto concurrent_priority_queue di origine.

Valore restituito

Riferimento a questo concurrent_priority_queue oggetto.

push

Aggiunge un elemento alla coda di priorità simultanea. Questo metodo è indipendente dalla concorrenza.

void push(const value_type& _Elem);

void push(value_type&& _Elem);

Parametri

_Elem
Elemento da aggiungere alla coda di priorità simultanea.

size

Restituisce il numero di elementi presenti nella coda di priorità simultanea. Questo metodo è indipendente dalla concorrenza.

size_type size() const;

Valore restituito

Numero di elementi in questo concurrent_priority_queue oggetto.

Osservazioni:

La dimensione restituita è garantita di includere tutti gli elementi aggiunti dalle chiamate alla funzione push. Tuttavia, potrebbe non riflettere i risultati delle operazioni simultanee in sospeso.

scambio

Scambia il contenuto di due code di priorità simultanee. Questo metodo non è sicuro per la concorrenza.

void swap(concurrent_priority_queue& _Queue);

Parametri

_Coda
Oggetto concurrent_priority_queue con cui scambiare il contenuto.

try_pop

Rimuove e restituisce l'elemento con la priorità più elevata dalla coda se quest'ultima non è vuota. Questo metodo è indipendente dalla concorrenza.

bool try_pop(reference _Elem);

Parametri

_Elem
Riferimento a una variabile che verrà popolata con l'elemento con priorità più alta, se la coda non è vuota.

Valore restituito

true se è stato estratto un valore, false in caso contrario.

Vedi anche

Spazio dei nomi concurrency
Contenitori e oggetti paralleli