Condividi tramite


Funzione parallel_buffered_sort

Dispone gli elementi in un intervallo specificato in un ordine nondescending, o in base a un criterio di ordinamento specificato da un predicato binario, in parallelo.Questa funzione è semanticamente simile a std::sort in quanto è un confronto basato, instabilità, ordinamento sul posto con la differenza che richiede uno spazio aggiuntivo di O(n) e richiede l'inizializzazione predefinita per gli elementi che sono ordinati.

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

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

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

template<
   typename _Random_iterator,
   typename _Function
>
inline void parallel_buffered_sort(
   const _Random_iterator &_Begin,
   const _Random_iterator &_End,
   const _Function &_Func,
   const size_t _Chunk_size = 2048
);

template<
   typename _Allocator,
   typename _Random_iterator,
   typename _Function
>
inline void parallel_buffered_sort(
   const _Random_iterator &_Begin,
   const _Random_iterator &_End,
   const _Function &_Func,
   const size_t _Chunk_size = 2048
);

template<
   typename _Allocator,
   typename _Random_iterator,
   typename _Function
>
inline void parallel_buffered_sort(
   const _Allocator& _Alloc,
   const _Random_iterator &_Begin,
   const _Random_iterator &_End,
   const _Function &_Func,
   const size_t _Chunk_size = 2048
);

Parametri

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

  • _Allocator
    Il tipo di allocatore di memoria compatibile STL.

  • _Function
    Il tipo di criteri di confronto binario.

  • _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.

  • _Func
    Un oggetto definito dall'utente di funzione di predicato che definisce i criteri di confronto da soddisfare gli elementi successivi in ordine.Un predicato binario accetta due argomenti e restituisce true una volta soddisfatti e false una volta non soddisfatta.Questa funzione di criteri di confronto necessario imporre un ordine debole rigido a coppie di elementi dalla sequenza.

  • _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.Nella maggior parte dei casi il parallel_buffered_sort verrà visualizzato un miglioramento delle prestazioni su parallel_sorte utilizzarlo in parallel_sort se la memoria disponibile.

Se non viene fornito un std::less criteri di confronto binario viene utilizzato come predefinito, che richiede il tipo di elemento di fornire all'operatore operator<().

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