次の方法で共有


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 オブジェクトを使用すると、非 const 参照、lvalue 参照である必要 constauto_partitioner&conststatic_partitioner&constsimple_partitioner& または affinity_partitioner& の 1 種類があります。

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

  • _Binary_op
    2 種類のソース範囲内に、次の順序でペアに適用されるユーザー定義の二項関数オブジェクト。

戻り値

Output 要素を受け取っている割り当て先範囲の最後の要素の一つ前の位置 1 を示す出力反復子は、関数オブジェクトによって変換されます。

解説

auto_partitioner パーティショナーは、明示的な引数を指定せずにオーバーロードで使用されます。

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

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

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

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

必要条件

ヘッダー: ppl.h

名前空間: concurrency

参照

関連項目

concurrency 名前空間