Freigeben über


parallel_buffered_sort-Funktion

Ordnet die Elemente in einem angegebenen Bereich in einer aufsteigenden Reihenfolge oder gemäß eines Sortierkriteriums an, das von einem binären Prädikat parallel angegeben wird. Diese Funktion entspricht std::sort semantisch darin, dass sie eine vergleichsbasierte, instabile, direkte Sortierung ist, abgesehen von den zusätzlich erforderlichen O(n)-Leerzeichen und er notwendigen Standardinitialisierung für die sortierten Elemente.

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

Parameter

  • _Random_iterator
    Der Iteratortyp des Eingabebereich.

  • _Allocator
    Der Typ einer kompatiblen Speicherbelegungsfunktion STL-.

  • _Function
    Der Typ des binären Vergleichsoperators.

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

  • _Func
    Ein benutzerdefiniertes Prädikatfunktionsobjekt, das definiert durch aufeinander folgende Elemente in der Bestellung erfüllt werden Vergleichskriterium. Ein binärer Prädikat akzeptiert zwei Argumente und gibt true zurück, wenn erfüllt und false, wenn nicht erfüllt wird. Diese Vergleichsoperatorfunktion muss eine genaue schwache Sortierung Paare von Elementen aus der Sequenz erzeugen.

  • _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. In den meisten Fällen werden parallel_buffered_sort eine Leistungssteigerung zu parallel_sort, und Sie sollten es über parallel_sort verwenden, wenn Sie den verfügbaren Arbeitsspeicher haben.

Wenn Sie nicht angeben, wird ein Binärdateivergleichsoperator std::less als Standard verwendet, der den Elementtyp erforderlich, den Operator operator<() bereitgestellt.

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