parallel_transform 函式

平行地將指定的函式物件應用至來源中的每個項目,或是一組來自兩個來源範圍的項目,並複製函式物件的傳回值到目的範圍。 這項功能與 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
);

參數

  • _Input_iterator1
    第一個或只有輸入的 Iterator 的型別。

  • _Output_iterator
    輸出迭代器的類型。

  • _Unary_operator
    在輸入範圍內的每個元素執行的一元的功能子型別。

  • _Input_iterator2
    第二輸入迭代器的類型。

  • _Binary_operator
    在從兩個來源範圍的項目是否執行的二進位功能子型別。

  • _Partitioner

  • _First1
    在第一個或只來源範圍的位置上的第一個項目的輸入定址的 Iterator。

  • _Last1
    在最後一個或只來源範圍的位置上的第一個項目的輸入定址的 Iterator。

  • _Result
    輸出迭代器,其在目的範圍定址第一個項目的位置。

  • _Unary_op
    套用於來源範圍中每個項目的使用者定義一元函式物件。

  • _Part
    Partitioner 物件的參考。 引數可以是其中一個 constauto_partitioner&static_partitioner&const,或 constsimple_partitioner& affinity_partitioner& ,如果使用 affinity_partitioner 物件,參考必須是非常數左值參考,因此,演算法可能儲存未來重複的狀態可以重複使用。

  • _First2
    在第二個來源範圍的位置上的第一個項目的輸入定址的 Iterator。

  • _Binary_op
    套用依轉寄順序配對,對兩個來源範圍的使用者定義的二元函式物件。

傳回值

輸出定址的 Iterator 將最後一個項目的位置已在接收由函式物件轉換的輸出之項目的目的範圍。

備註

auto_partitioner 為多載使用,而不用明確 Partitioner 引數。

對於不支援隨機存取的 Iterator,只有 auto_partitioner 支援。

採用 _Unary_op 引數的多載轉換輸入範圍會輸出範圍藉由套用一元的功能會對在項目範圍內的每一個項目。 _Unary_op 必須支援 T 是重複的範圍實值型別的簽章的 operator()(T) 函式呼叫運算子。

採用 _Binary_op 引數的多載轉換兩個項目的範圍為輸出範圍藉由套用二進位功能會為從第一個輸入範圍的項目和從第二個輸入範圍的項目。 _Binary_op 必須支援具有 TU 為兩個項目的 Iterator 的實值型別的簽章的 operator()(T, U) 函式呼叫運算子。

如需詳細資訊,請參閱平行演算法

需求

標頭: ppl.h

**命名空間:**concurrency

請參閱

參考

concurrency 命名空間