Freigeben über


parallel_buffered_sort-Funktion

Ordnet die Elemente in einem angegebenen Bereich eine nondescending Reihenfolge oder gemäß einem Sortierkriterium an, das von einem binär Prädikat parallel angegeben wird.Diese Funktion ist semantisch auf std::sort darin, dass sie ein verglichene-basiertes instabil ist, direkte Sortierung vergleichbar, außer dass zusätzlicher Abstand benötigt O(n) und erfordert Standardinitialisierung für Elemente, die sortiert werden.

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 Iterator den Typ des Eingabebereichs.

  • _Allocator
    Der Typ einer kompatiblen Speicherbelegungsfunktion STLs.

  • _Function
    Der Typ des binären Vergleichsoperators.

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

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

  • _Alloc
    Eine Instanz einer kompatiblen Speicherbelegungsfunktion STLs.

  • _Func
    Ein benutzerdefiniertes Prädikat funktionsobjekt, das das von aufeinander folgenden Elemente definiert in der Reihenfolge ausgeführt werden soll, kriterium Vergleichs.Ein binär Prädikat akzeptiert zwei Argumente und gibt true zurück, wenn erfüllt, und false, wenn es nicht erfüllt wird.Diese Vergleichsoperator Funktion muss eine strikte schwache Sortierung Paare von Elementen aus der Reihenfolge auferlegen.

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

Hinweise

Alle Überladungen müssen zusätzliche Leerzeichen n * sizeof(T), in dem n die Anzahl der zu sortierenden Elementen, ist T und den Elementtyp ist.In den meisten Fällen wird parallel_buffered_sort eine Leistungssteigerung zu parallel_sort an, und Sie sollten sie über parallel_sort verwenden, wenn Sie den verfügbaren Arbeitsspeicher verfügen.

Wenn Sie nicht angeben, wird std::less einen binären vergleichsoperator als Standard verwendet, der den Elementtyp ist es erforderlich, den Operator operator<() bereitzustellen.

Wenn Sie keinen Belegungsfunktions - Werttyp oder eine Instanz angeben, wird die STL-Speicherbelegungsfunktion std::allocator<T> verwendet, um den Puffer zuzuordnen.

Der Algorithmus teilt der Eingabebereich in zwei Codeausschnitte und teilt nacheinander in jeder Ausschnitt in zwei Sub Ausschnitte parallel zur Ausführung unter.Das optionale Argument _Chunk_size kann verwendet werden, um den Algorithmus anzugeben, dass es sollte < Größe von ausschnitte Handle _Chunk_size seriell.

Anforderungen

Header: ppl.h

Namespace: Parallelität

Siehe auch

Referenz

concurrency-Namespace