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
    在输入范围的每个组件执行的一元 functor 的类型。

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

  • _Binary_operator
    在两个源范围的元素成对地执行的二进制 functor 的类型。

  • _Partitioner

  • _First1
    解决输入的迭代器第一个元素位于第一个或将操作的仅源范围的位置。

  • _Last1
    解决输入的迭代器通过最终元素在第一个或将操作的仅源范围的位置一。

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

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

  • _Part
    对分区程序对象的引用。 参数可以是一个 constauto_partitioner&conststatic_partitioner&constsimple_partitioner&affinity_partitioner& ,如果使用 affinity_partitioner 对象,引用必须是一个非常量左值引用,因此,算法可以存储将来的循环的状态可以重用。

  • _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 命名空间