parallel_transform 関数

ソース範囲内の各要素、 2 台のソース範囲内の要素のペアに指定された関数のオブジェクトを、適用先の範囲オブジェクトに関数の戻り値を並列にコピーします。この機能は 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
    1 番目の種類や入力反復子だけです。

  • _Output_iterator
    出力反復子の型。

  • _Unary_operator
    入力範囲内の各要素で実行する単項ファンクタの種類。

  • _Input_iterator2
    2 番目の入力反復子の型。

  • _Binary_operator
    バイナリ ファンクタの種類は 2 個のソース範囲内の要素のペアに実行します。

  • _Partitioner

  • _First1
    1 番目の最初の要素示す入力反復子または操作するソース範囲内のみの位置を示します。

  • _Last1
    1 番目の最後の要素示す入力反復子または操作するソース範囲内のみを 1 を超える位置。

  • _Result
    割り当て先範囲の先頭の要素の位置を示す出力反復子。

  • _Unary_op
    ソース範囲内の各要素に適用されるユーザー定義の単項関数オブジェクト。

  • _Part
    パーティショナーのオブジェクトへの参照。引数は、アルゴリズムで再利用するために、将来のループの状態を保存できるように affinity_partitioner のオブジェクトを使用すると、参照非定数の左辺値の参照である必要があります constauto_partitioner&conststatic_partitioner&constsimple_partitioner& または affinity_partitioner& 1 のいずれかです。

  • _First2
    アクティブにする二つ目のソース範囲内の先頭の要素の位置を示す入力反復子。

  • _Binary_op
    、 2 種類のソース範囲内への前方順序で、ペアに適用されるユーザー定義するバイナリの関数オブジェクト。

戻り値

出力の要素を受け取っている先の範囲の最後の要素を超える位置 1 に対応する出力反復子は、関数オブジェクトによって変換します。

解説

auto_partitioner は明示パーティショナーの引数なしでオーバーロードに使用されます。

ランダム アクセスをサポートしない反復子用に auto_partitioner のみがサポートされます。

出力の範囲に入力範囲内の各要素に単項ファンクタを適用して引数の _Unary_op の変換に入力範囲を受け取るオーバーロード。_Unary_op は T が反復処理される範囲の値型である operator()(T) シグネチャを持つ関数呼び出し演算子をサポートする必要があります。

出力範囲の最初の入力範囲で 1 種類の要素と 2 番目の入力範囲から 1 の要素にバイナリ ファンクタを適用して引数の _Binary_op の変換を 2 回入力範囲を受け取るオーバーロード。_Binary_op は TU が 2 入力反復子の値型である operator()(T, U) シグネチャを持つ関数呼び出し演算子をサポートする必要があります。

詳細については、「並列アルゴリズム」を参照してください。

必要条件

ヘッダー: ppl.h

名前空間: の同時実行

参照

関連項目

concurrency 名前空間