Udostępnij za pośrednictwem


Funkcja parallel_radixsort

Rozmieszcza elementy w określonym zakresie zamówienia nie malejącej za pomocą radix, algorytm sortowania.Jest to funkcja sortowania stabilne, które wymaga funkcji projekcji, który można elementy mają być sortowane w niepodpisane kluczy typu integer programu project.Inicjowanie domyślny jest wymagane elementy są sortowane.

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
);

Parametry

  • _Random_iterator
    Typ iteratora zakres wejściowy.

  • _Allocator
    Typ programu przydzielania pamięci zgodnego STL.

  • _Function
    Typ funkcji rzutowania.

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

  • _Proj_func
    Obiekt funkcji rzut zdefiniowane przez użytkownika, który konwertuje integralną wartość elementu.

  • _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.Teoria rzut jednoargumentowe z podpisemI _Proj_func(T) jest wymagane, aby powrócić do klucza, gdy element, gdzie T jest typ elementu i I jest niepodpisany typu integer podobne.

Jeśli nie podasz funkcji rzut domyślnej funkcji rzutowania, która po prostu zwraca element jest używana dla typów integralną.Funkcja nie będzie można skompilować, jeśli element nie jest typem całkowitym w przypadku braku funkcji projekcji.

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

Współbieżność obszaru nazw