0

を使用して float の配列で最大の要素を見つける関数を実装する必要がありますppl.h

この回答に基づいて、このコードがあります:

float find_largest_element_in_matrix_PPL(float* m, size_t dims)
{
    float max_element;
    int row, col;
    concurrency::combinable<float> locals([] { return INT_MIN + 0.f; });
    concurrency::parallel_for_each(size_t(0), dims * dims, [&locals](int curr)
    {
        float & localMax = locals.local();
        localMax = max<float>(localMax, curr);
    });

    max_element = locals.combine([](float left, float right) { return max<float>(left, right); });
    cout << max_element << endl;
    return max_element;
}

ただし、このコードには問題があります。

  • 実行前に次の例外をスローします。

エラー C2780 'void Concurrency::_Parallel_for_each_impl(const _Random_iterator &,const _Random_iterator &,const _Function &,_Partitioner &&,std::random_access_iterator_tag)': 5 つの引数が必要です - 4 つの指定された parp D:\Microsoft Visual Studio 14.0\VC\include\ ppl.h 2987

エラー C2780 'void Concurrency::_Parallel_for_each_impl(_Forward_iterator,const _Forward_iterator &,const _Function &,const Concurrency::auto_partitioner &,std::forward_iterator_tag)': 5 つの引数が必要 - 4 つの指定された parp D:\Microsoft Visual Studio 14.0\VC\インクルード\ppl.h 2987

エラー C2893 関数テンプレートの特殊化に失敗しました 'iterator_traits<_Iter>::iterator_category std::_Iter_cat(const _Iter &)' parp D:\Microsoft Visual Studio 14.0\VC\include\ppl.h 2987


  1. その問題を解決するのを手伝ってくれませんか?

  2. を利用するためにコードを書き直すにはどうすればよいparallel_forですか? parallel_for(ブロック内の関数に渡された配列引数を参照できません)

4

1 に答える 1