parallel_buffered_sort — Funkcja
Rozmieszcza elementy w określonym zakresie, do nondescending zamówienia lub zgodnie z kryterium sortowania określony przez predykatu dwuelementowego równolegle.Ta funkcja jest semantycznie podobny do std::sort w tym jest sortowanie oparte na porównywanie, niestabilny, w miejscu, z zastrzeżeniem, że potrzebuje O(n) dodatkowe miejsce i wymaga inicjowania domyślne elementy są sortowane.
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
);
Parametry
_Random_iterator
Typ iteratora zakres wejściowy._Allocator
Typ programu przydzielania pamięci zgodnego STL._Function
Typ binarny porównawczych._Begin
Random access iteratora adresowania pozycja pierwszego elementu w zakresie sortowania._End
Random access iteratora adresowania jedną pozycję w przeszłości końcowy element w zakresie sortowania._Alloc
Wystąpienie programu przydzielania pamięci zgodnego STL._Func
Obiekt predykatu funkcję zdefiniowaną przez użytkownika, który definiuje kryterium Porównanie, które mają być spełnione przez kolejne elementy w kolejności.Predykatu dwuelementowego ma dwa argumenty i zwraca true po stwierdzeniu i false , gdy nie są spełnione.Ta funkcja komparatorze muszą nałożyć ścisłe słabe zamawiania na parach elementów z sekwencji._Chunk_size
Rozmiar mimimum fragmentu, który ma zostać podzielony na dwa równoległe wykonywanie.
Uwagi
Wszystkie overloads wymagają n * sizeof(T) dodatkowe miejsce, gdzie n jest liczba elementów, które mają być sortowane i T jest typ elementu.W większości przypadków parallel_buffered_sort pokaże poprawy wydajności nad parallel_sort, i należy używać go nad parallel_sort, jeśli masz dostępnej pamięci.
Jeśli nie podasz binarne komparatorze std::less jest używana jako domyślna, która wymaga typu elementu zapewnić operator operator<().
Jeśli nie podasz typu programu przydzielania lub instancji, program przydzielania pamięci STL std::allocator<T> jest używana do alokacji buforu.
Algorytm zakresu wejściowego są podzielone na dwa kawałki i kolejno każdego fragmentu są podzielone na dwie sub-chunks wykonywanie równolegle.Opcjonalny argument _Chunk_size można wskazać algorytm powinny obsługi kawałki rozmiaru < _Chunk_sizepojedynczo.
Wymagania
Nagłówek: ppl.h
Obszar nazw: współbieżności