Share via


parallel_transform-Funktion

Wendet ein angegebenes Funktionsobjekt auf jedes Element in einem Quellbereich oder auf ein Elementpaar aus zwei Quellbereichen an und kopiert die Rückgabewerte des Funktionsobjekts parallel in einen Zielbereich. Diese Funktion entspricht semantisch 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 auf allen Elementen im Eingabebereich Feature-Elements, ausgeführt werden.

  • _Input_iterator2
    Der Typ des zweiten Eingabeiterators.

  • _Binary_operator
    Der Typ von dem binäres Funktionselement ausgeführten paarweisen auf Elementen aus den beiden Quellbereichen.

  • _Partitioner

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

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

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

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

  • _Part
    Ein Verweis auf das Partitioniererobjekt. Das Argument kann einer von constauto_partitioner&, conststatic_partitioner&, const&simple_partitioner oder affinity_partitioner sein &, wenn ein Objekt verwendet affinity_partitioner, wird der Verweis muss ein nicht konstanter L-Werts-Verweis sein, sodass der Algorithmus Zustand speichern kann, dass zukünftige Schleifen wiederverwenden.

  • _First2
    Ein Eingabeiterator, der die Position des ersten Elements im zweiten Quellbereich behandelt, ausgeführt gelassen werden.

  • _Binary_op
    Ein benutzerdefiniertes binäres Funktionsobjekt, das, in einem Terminauftrag, auf den zwei Quellbereichen auf paarweises ist.

Rückgabewert

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

Hinweise

auto_partitioner wird für Überladungen ohne explizites Partitioniererargument verwendet.

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

Die Überladungen, die das Argument _Unary_op annehmen, transformieren den Eingabebereich in den Ausgabebereich, indem den unären Funktionselement zu jedem Element im Eingabebereich anwenden. _Unary_op muss den Funktionsaufrufoperator mit Signatur operator()(T) unterstützen, in der T-Werttyp des Bereichs ist, der von durchlaufen wird.

Die Überladungen, die das Argument _Binary_op annehmen, transformieren zwei Eingabebereiche in den Ausgabebereich, indem dem binären Funktionselement zu einem Element im Eingabebereich ersten und einem zweiten Element im Eingabebereich anwenden. _Binary_op muss den Funktionsaufrufoperator mit Signatur operator()(T, U) unterstützen, in der T, U-Werttypen der zwei Eingabeiteratoren sind.

Weitere Informationen finden Sie unter Parallele Algorithmen.

Anforderungen

Header: ppl.h

Namespace: Parallelität

Siehe auch

Referenz

concurrency-Namespace