Funzione parallel_radixsort

Dispone gli elementi in un intervallo specificato in un ordine non discendente utilizzando un algoritmo di ordinamento di base.Si tratta di una funzione stabile di ordinamento che richiede una funzione di proiezione che possibile proiettare gli elementi per essere ordinato nelle chiavi di tipo Integer senza segno.l'inizializzazione predefinita è obbligatoria per gli elementi che sono ordinati.

template<
   typename _Random_iterator
>
inline void parallel_radixsort(
   const _Random_iterator &_Begin,
   const _Random_iterator &_End
);

template<
   typename _Allocator,
   typename _Random_iterator
>
inline void parallel_radixsort(
   const _Random_iterator &_Begin,
   const _Random_iterator &_End
);

template<
   typename _Allocator,
   typename _Random_iterator
>
inline void parallel_radixsort(
   const _Allocator& _Alloc,
   const _Random_iterator &_Begin,
   const _Random_iterator &_End
);

template<
   typename _Random_iterator,
   typename _Function
>
inline void parallel_radixsort(
   const _Random_iterator &_Begin,
   const _Random_iterator &_End,
   const _Function &_Proj_func,
   const size_t _Chunk_size = 256 * 256
);

template<
   typename _Allocator,
   typename _Random_iterator,
   typename _Function
>
inline void parallel_radixsort(
   const _Random_iterator &_Begin,
   const _Random_iterator &_End,
   const _Function &_Proj_func,
   const size_t _Chunk_size = 256 * 256
);

template<
   typename _Allocator,
   typename _Random_iterator,
   typename _Function
>
inline void parallel_radixsort(
   const _Allocator& _Alloc,
   const _Random_iterator &_Begin,
   const _Random_iterator &_End,
   const _Function &_Proj_func,
   const size_t _Chunk_size = 256 * 256
);

Parametri

  • _Random_iterator
    Il tipo di iteratore dell'intervallo di input.

  • _Allocator
    Il tipo di allocatore di memoria compatibile STL.

  • _Function
    Il tipo di funzione di proiezione.

  • _Begin
    Un iteratore di accesso casuale destinato alla posizione del primo elemento nell'intervallo da ordinare.

  • _End
    Un iteratore di accesso casuale destinato alla posizione una dopo l'elemento finale nell'intervallo da ordinare.

  • _Alloc
    Un'istanza di un allocatore di memoria compatibile STL.

  • _Proj_func
    Un oggetto definito dall'utente di funzione di proiezione che converte un elemento in un valore integrale.

  • _Chunk_size
    La dimensione di mimimum di un blocco che verrà suddiviso in due per l'esecuzione parallela.

Note

Tutti gli overload richiedono ulteriore spazio di n * sizeof(T) , in cui n è il numero di elementi da ordinare e T è il tipo di elemento.Un functor unario di proiezione con la firmaI _Proj_func(T) è necessario restituire una chiave una volta fornito un elemento, in cui T è il tipo di elemento e I è un tipo di tipo Integer senza segno.

Se non viene specificata una funzione di proiezione, una funzione di proiezione predefinita che restituisce semplicemente l'elemento viene utilizzata per i tipi integrali.La funzione non potrà essere compilato se l'elemento non è un tipo integrale in assenza di una funzione di proiezione.

Se non si fornisce un tipo o un'istanza dell'allocatore, l'allocatore di memoria std::allocator<T> STL viene utilizzato per allocare il buffer.

L'algoritmo divide l'intervallo di input in due blocchi e successivamente suddivide ogni blocco in due sottomarino-blocchi per l'esecuzione in parallelo.L'argomento facoltativo _Chunk_size può essere utilizzato per indicare all'algoritmo che deve blocchi di handle di < _Chunk_size di dimensione seriale.

Requisiti

Header: ppl.h

Concorrenza diSpazio dei nomi:

Vedere anche

Riferimenti

Spazio dei nomi concurrency