Freigeben über


parallel_radixsort-Funktion

Ordnet Elemente in einem angegebenen Bereich mithilfe eines Basis-Sortieralgorithmus in einer absteigenden Reihenfolge an. Dies ist eine stabile Sortierfunktion, die eine Projektionsfunktion erfordert, mit der Elemente zur Sortierung in Schlüssel, die ganzen Zahlen ohne Vorzeichen ähneln, projiziert werden können. Standardinitialisierung ist für die zu sortierenden Elemente erforderlich.

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

Parameter

  • _Random_iterator
    Der Iteratortyp des Eingabebereich.

  • _Allocator
    Der Typ einer kompatiblen Speicherbelegungsfunktion STL-.

  • _Function
    Der Typ der Projektionsfunktion.

  • _Begin
    Ein Iterator mit wahlfreier Zugriff, der die Position des ersten Elements im Bereich behandelt sortiert werden.

  • _End
    Ein Iterator mit wahlfreier Zugriff, der die Position eine hinter dem letzten Element im Bereich behandelt sortiert werden.

  • _Alloc
    Eine Instanz einer kompatiblen Speicherbelegungsfunktion STL-.

  • _Proj_func
    Ein benutzerdefiniertes Projektionsfunktionsobjekt, das ein Element in einen ganzzahligen Wert konvertiert.

  • _Chunk_size
    Die mimimum Größe eines Blocks, der in zwei für parallele Ausführung geteilt wird.

Hinweise

Alle Überladungen erfordern zusätzliche Leerzeichen n * sizeof(T), wobei n die Anzahl der zu sortierende Elementen ist, und der Elementtyp T ist. Ein unäres Projektionsfunktionselement mit der Signatur I _Proj_func(T) ist erforderlich, einer Schlüssel zurückgegeben wird, wenn ein Element angegeben wird, wobei T und I ist der Elementtyp ein Zahl ähnliche Typ ohne Vorzeichen zu.

Wenn Sie keine Projektionsfunktion angeben, wird eine Standardprojektionsfunktion, die einfach dem Element zurückgibt, für ganzzahlige Typen verwendet. Die Funktion kann kompilieren, wenn nicht das Element kein ganzzahliger Typ in Ermangelung einer Projektionsfunktion ist.

Wenn Sie keinen Zuweisungstyp oder -Instanz geben, wird die STL-Speicherbelegungsfunktion std::allocator<T> verwendet, um den Puffer reserviert.

Der Algorithmus weist den Eingabebereich in zwei Blöcke mit und übermittelt nacheinander jeden Block in zwei SubBlöcke für Ausführung parallel über. Das optionale Argument _Chunk_size kann verwendet werden, um dem Algorithmus anzugeben dass es sollte Handleblöcke der Größe <_Chunk_size seriell.

Anforderungen

Header: ppl.h

Namespace: Parallelität

Siehe auch

Referenz

concurrency-Namespace