Udostępnij za pośrednictwem


Funkcja parallel_transform

Stosuje się obiekt określonej funkcji, każdy element w zakres źródłowy lub para elementów z dwóch zakresów źródłowych i kopiuje wartości zwracane funkcji obiekt do zakresu docelowego, równolegle.Tej funkcjonalności jest semantycznie równoważne 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
);

Parametry

  • _Input_iterator1
    Typ pierwszego lub tylko wejściowego iteratora.

  • _Output_iterator
    Typ iteratora danych wyjściowych.

  • _Unary_operator
    Typ Teoria jednoargumentowe mają być wykonane na każdy element w zakresie wejściowym.

  • _Input_iterator2
    Typ iteratora wejściowy drugiej.

  • _Binary_operator
    Typ binarny Teoria pairwise wykonane na elementach z zakresów źródłowych dwóch.

  • _Partitioner

  • _First1
    Wejściowy iteratora położenie pierwszego elementu w pierwszym lub tylko zakres źródłowy ma być obsługiwany na adresowania.

  • _Last1
    Wejściowy iteratora adresowania położenie jednego w przeszłości końcowy element w pierwszej lub tylko zakres źródłowy ma być obsługiwany na.

  • _Result
    Iterację wyjście adresowania położenie pierwszego elementu w zakresie docelowym.

  • _Unary_op
    Obiekt funkcji jednoargumentowe zdefiniowane przez użytkownika, stosowany do każdego elementu w zakresie źródłowym.

  • _Part
    Odwołanie do obiektu go.Argument może być jednym z constauto_partitioner&, conststatic_partitioner&, constsimple_partitioner& lub affinity_partitioner& Jeśli affinity_partitioner obiekt jest używany, odniesienia muszą być odwołanie nie const l wartość, tak aby algorytm można przechowywać stan dla przyszłych pętli do ponownego wykorzystania.

  • _First2
    Wejściowy iterację adresowania położenie pierwszego elementu w drugi zakres źródłowy ma być obsługiwany na.

  • _Binary_op
    Obiekt binarny funkcję zdefiniowaną przez użytkownika, pairwise, stosowany w kolejności do przodu, do dwóch zakresów.

Wartość zwracana

Adresowanie jedną pozycję w przeszłości końcowy element w zakresie docelowym, która odbiera elementy danych wyjściowych przez obiekt funkcji iterację danych wyjściowych.

Uwagi

auto_partitioner będzie używany dla overloads bez argumentu jawne go.

Dla Iteratory, które nie obsługują losowy dostęp tylko auto_partitioner jest obsługiwany.

Overloads, które argument _Unary_op przekształcić zakres wyjściowy zakres wejściowy stosując Teoria jednoargumentowe do każdego elementu w zakresie wejściowym._Unary_opoperator wywołania funkcji z podpisem, musi obsługiwać operator()(T) gdzie T jest typem wartości zakresu są podstawy nad.

Overloads, które argument _Binary_op przekształcić zakres wyjściowy dwa zakresy wejściowy stosując binarne Teoria jeden element z pierwszego zakresu wejściowego i jeden element z drugiego zakresu wejściowego._Binary_opoperator wywołania funkcji z podpisem, musi obsługiwać operator()(T, U) gdzie T, U są typy wartości dwóch Iteratory wejściowe.

Aby uzyskać więcej informacji, zobacz Algorytmy równoległe.

Wymagania

Nagłówek: ppl.h

Obszar nazw: współbieżności

Zobacz też

Informacje

Współbieżność obszaru nazw