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: