Udostępnij za pośrednictwem


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

Zobacz też

Informacje

concurrency — Przestrzeń nazwy