Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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>>
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.
_Asse
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 costante a un elemento di tipo memorizzato in una coda di priorità concorrente. |
reference |
Tipo che rappresenta un riferimento a un elemento del tipo archiviato in una coda di priorità concorrente. |
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 | Sovraccarico. Costruisce una coda di priorità concorrenziale. |
Metodi pubblici
| Nome | Descrizione |
|---|---|
| cancellare | Cancella tutti gli elementi nella coda di priorità simultanea. Questo metodo non è sicuro per la concorrenza. |
| vuoto | Testa se la coda di priorità simultanea è vuota nel momento in cui questo metodo viene chiamato. Questo metodo è sicuro per la concorrenza. |
| get_allocator | Restituisce una copia dell'allocatore utilizzato per costruire la coda di priorità simultanea. Questo metodo è sicuro per la concorrenza. |
| invia | Sovraccarico. Aggiunge un elemento alla coda di priorità concorrente. Questo metodo è sicuro per la concorrenza. |
| dimensione | Restituisce il numero di elementi presenti nella coda di priorità simultanea. Questo metodo è sicuro per la concorrenza. |
| sostituire | 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 è sicuro per la concorrenza. |
Operatori pubblici
| Nome | Descrizione |
|---|---|
| Operatore = | Sovraccarico. 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
chiaro
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.
coda a priorità concorrente
Costruisce una coda di priorità concorrenziale.
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.
_Ale
Classe Allocator da usare con questo oggetto.
_Init_capacity
Capacità iniziale dell'oggetto concurrent_priority_queue.
_Cominciare
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 di priorità _Src.
Il sesto e il settimo costruttore specificano uno spostamento della coda di priorità _Src.
vuoto
Testa se la coda di priorità simultanea è vuota nel momento in cui questo metodo viene chiamato. Questo metodo è sicuro per la 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 è sicuro per la 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.
spingere
Aggiunge un elemento alla coda di priorità concorrente. Questo metodo è sicuro per la concorrenza.
void push(const value_type& _Elem);
void push(value_type&& _Elem);
Parametri
_Elem
Elemento da aggiungere alla coda di priorità simultanea.
dimensione / taglia
Restituisce il numero di elementi presenti nella coda di priorità simultanea. Questo metodo è sicuro per la 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 è sicuro per la 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.