Condividi tramite


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

Vedere anche

Riferimenti

Spazio dei nomi concurrency