Funzione parallel_sort
Dispone gli elementi in un intervallo specificato in un ordine non decrescente, o secondo un criterio di ordinamento specificato da un predicato binario, in parallelo. Questa funzione è semanticamente simile a std::sort in quanto si tratta di un ordinamento basato sul confronto, instabile, sul posto.
template<
typename _Random_iterator
>
inline void parallel_sort(
const _Random_iterator &_Begin,
const _Random_iterator &_End
);
template<
typename _Random_iterator,
typename _Function
>
inline void parallel_sort(
const _Random_iterator &_Begin,
const _Random_iterator &_End,
const _Function &_Func,
const size_t _Chunk_size = 2048
);
Parametri
_Random_iterator
Tipo dell'iteratore dell'intervallo di input._Function
Tipo del functor binario di confronto._Begin
Un iteratore ad accesso casuale che punta alla posizione del primo elemento nell'intervallo da ordinare._End
Un iteratore ad accesso casuale che punta alla prima posizione oltre l'elemento finale nell'intervallo da ordinare._Func
Un oggetto funzione predicativa definito dall'utente che definisce i criteri di confronto che devono essere soddisfatti dagli elementi successivi nell'ordine. Un predicato binario accetta due argomenti e restituisce true se la condizione è soddisfatta e false se non è soddisfatta. Questa funzione di confronto deve imporre un ordine debole rigido rispetto alle coppie di elementi della sequenza._Chunk_size
Dimensione minima di un blocco che verrà suddiviso in due per l'esecuzione parallela.
Note
Il primo overload utilizza il confronto binario std::less.
Il secondo overload utilizza il confronto binario fornito che deve avere la firma bool _Func(T, T) dove T è il tipo degli elementi dell'intervallo di input.
L'algoritmo divide l'intervallo di input in due blocchi e successivamente suddivide ogni blocco in due sottoblocchi per l'esecuzione in parallelo. L'argomento facoltativo _Chunk_size può essere utilizzato per indicare all'algoritmo che deve gestire blocchi di dimensione < _Chunk_size in serie.
Requisiti
Header: ppl.h
Spazio dei nomi: concorrenza