Share via


parallel_transform-Funktion

Wendet ein angegebenes Funktionsobjekt auf jedes Element im Quellbereich oder einem Paar von Elementen aus zwei Quellbereichen und kopiert die Rückgabewerte des Funktionsobjekts in einen Zielbereich parallel.Diese funktionale ist semantisch gleichwertig zu std::transform.

template <
   typename _Input_iterator1,
   typename _Output_iterator,
   typename _Unary_operator
>
_Output_iterator parallel_transform(
   _Input_iterator1_First1,
   _Input_iterator1_Last1,
   _Output_iterator_Result,
   const _Unary_operator& _Unary_op,
   const auto_partitioner& _Part = auto_partitioner()
);

template <
   typename _Input_iterator1,
   typename _Output_iterator,
   typename _Unary_operator
>
_Output_iterator parallel_transform(
   _Input_iterator1_First1,
   _Input_iterator1_Last1,
   _Output_iterator_Result,
   const _Unary_operator& _Unary_op,
   const static_partitioner& _Part
);

template <
   typename _Input_iterator1,
   typename _Output_iterator,
   typename _Unary_operator
>
_Output_iterator parallel_transform(
   _Input_iterator1_First1,
   _Input_iterator1_Last1,
   _Output_iterator_Result,
   const _Unary_operator& _Unary_op,
   const simple_partitioner& _Part
);

template <
   typename _Input_iterator1,
   typename _Output_iterator,
   typename _Unary_operator
>
_Output_iterator parallel_transform(
   _Input_iterator1_First1,
   _Input_iterator1_Last1,
   _Output_iterator_Result,
   const _Unary_operator& _Unary_op,
   affinity_partitioner& _Part
);

template <
   typename _Input_iterator1,
   typename _Input_iterator2,
   typename _Output_iterator,
   typename _Binary_operator,
   typename _Partitioner
>
_Output_iterator parallel_transform(
   _Input_iterator1_First1,
   _Input_iterator1_Last1,
   _Input_iterator2_First2,
   _Output_iterator_Result,
   const _Binary_operator& _Binary_op,
   _Partitioner&& _Part
);

template <
   typename _Input_iterator1,
   typename _Input_iterator2,
   typename _Output_iterator,
   typename _Binary_operator
>
_Output_iterator parallel_transform(
   _Input_iterator1_First1,
   _Input_iterator1_Last1,
   _Input_iterator2_First2,
   _Output_iterator_Result,
   const _Binary_operator& _Binary_op
);

Parameter

  • _Input_iterator1
    Der Typ des ersten oder nur Eingabeiterator.

  • _Output_iterator
    Der Typ des Ausgabeiterators.

  • _Unary_operator
    Der Typ des unären für jedes Element im Eingabebereich Funktionselements ausgeführt werden soll.

  • _Input_iterator2
    Der Typ des zweiten Eingabeiterators.

  • _Binary_operator
    Der Typ des binären Funktionselements paarweise führt bei Elementen aus den zwei Quellbereichen aus.

  • _Partitioner

  • _First1
    Ein Eingabeiterator, der die Position des ersten Elements in der ersten bzw. des Quellbereichs behandelt nur ausgeführt werden soll, an.

  • _Last1
    Ein Eingabeiterator, der die Position hinter dem letzten Element eine in der ersten oder nur Quellbereich adressiert an ausgeführt werden soll.

  • _Result
    Ein Ausgabeiterator, der die Position des ersten Elements im Zielbereich behoben werden.

  • _Unary_op
    Ein benutzerdefiniertes unäres Funktionsobjekt, die jedem Element im Quellbereich angewendet wird.

  • _Part
    Ein Verweis auf den Partitionierer Objekt.Das Argument kann eine von constauto_partitioner&, conststatic_partitioner&, constsimple_partitioner& oder affinity_partitioner& sein, wenn ein affinity_partitioner-Objekt verwendet wird, muss ein Verweis nicht konstante L-Werts-Verweis sein, damit der Algorithmus Zustand speichern kann, für die zukünftige Wiederverwendung Schleifen.

  • _First2
    Ein Eingabeiterator, der die Position des ersten Elements im zweiten Quellbereich adressiert an ausgeführt werden soll.

  • _Binary_op
    Ein benutzerdefiniertes binäres Funktionsobjekt, der in einem Terminauftrag, zwei Quellbereichen paarweise auf.

Rückgabewert

Ein Ausgabeiterator, der die Position hinter dem letzten Element eine im Zielbereich adressiert, der die Ausgabeelemente empfängt, Transformation vom Funktionsobjekt.

Hinweise

auto_partitioner wird für die Überladungen ohne ein explizites Partitionierer - Argument verwendet.

Für Iteratoren, die den wahlfreien Zugriff unterstützen nicht nur auto_partitioner unterstützt wird.

Die Überladungen, die das Argument akzeptieren _Unary_op Transformation den Eingabebereich Ausgabe in den Bereich, indem sie den unären Funktionselement zu jedem Element im Eingabebereich anwenden._Unary_op muss den Aufrufoperator mit Signatur operator()(T) unterstützen, in der T der Werttyp des Bereichs liegt, der durch durchlaufen wird.

Die Überladungen, die das Argument akzeptieren _Binary_op Transformation zwei Eingabebereiche Ausgabe in den Bereich, indem sie das binäre Funktionselement zu einem Element aus dem ersten Eingabebereich und ein Element aus dem zweiten Eingabebereich anwenden._Binary_op muss den Aufrufoperator mit Signatur operator()(T, U) unterstützen, in der T, U-Werttypen der beiden Eingabeiteratoren sind.

Weitere Informationen finden Sie unter Parallele Algorithmen.

Anforderungen

Header: ppl.h

Namespace: Parallelität

Siehe auch

Referenz

concurrency-Namespace