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
    类型第一或只在的迭代器。

  • _Output_iterator
    输出迭代器的类型。

  • _Unary_operator
    在输入值域的每个元素执行的一元仿函数的类型。

  • _Input_iterator2
    第二个输入迭代器的类型。

  • _Binary_operator
    在两个源区的元素是否执行的二进制仿函数的类型。

  • _Partitioner

  • _First1
    处理第一个元素在第一或仅源区位置的输入迭代器将对。

  • _Last1
    处理第一个元素在最后或仅源区位置的输入迭代器将对。

  • _Result
    在目标范围第一个元素的位置寻址的输出迭代器。

  • _Unary_op
    用户定义的一元函数对象应用于该源范围中的每个元素。

  • _Part
    对对象分区的引用。 论点可能是 const&constsimple_partitionerauto_partitionerstatic_partitioner&const&affinity_partitioner**&**其中一个,如果使用对象,affinity_partitioner 引用必须是非 Const 左值引用,因此算法,可存储状态,将来循环可以重用。

  • _First2
    处理第一个元素在第二源区位置的输入迭代器将对。

  • _Binary_op
    在前向排序成对应用,因此,为两个源区的用户定义函数的二进制对象。

返回值

寻址最终元素的输出位置的迭代器在接收函数对象转换的输出元素的目标范围。

备注

auto_partitioner 为重载使用,但没有显式的分区参数。

迭代器不支持随机访问,只支持 auto_partitioner

采用 _Unary_op 参数的重载以转换输入值域输出到范围通过应用一元 functor 于输入值域的每个元素。 _Unary_op 必须支持带有 T 是循环访问的值范围类型签名的 operator()(T) 函数调用运算符。

采用参数的 _Binary_op 的重载转换两个输入值域输出到范围通过二进制 functor 应用于第一个输入值域的元素以及第二个输入值域的元素。 _Binary_op 必须支持 TU 是具有两项的迭代器的值类型签名的 operator()(T, U) 函数调用运算符。

有关详细信息,请参阅并行算法

要求

**标头:**ppl.h

**命名空间:**并发

请参见

参考

concurrency 命名空间