2017-12-21 17 views
0

私はtransform_reduceを使って数値のセットを変換し、それらの要素の最大値まで減らそうとしています。max_elementを使ったtransform_reduce

auto lambda = [](uint64_t x) { 
    return function(x); 
}; 

counting_iterator<uint64_t> start(1); 
counting_iterator<uint64_t> finish(bound); 


auto max_val = *transform_reduce(start, finish, lambda, std::max_element(start, finish)); 

私のロジックは、(1)(バインド)機能するように、それは1からバウンドする関数にすべての値を変更することがあり、その後、それらの値と、私に最大を与えるが、私は問題を抱えています、誰にもできます私が達成したいと思うように助けてください? (1つの範囲をとる)std::transform_reduce

+0

「しかし、私は問題があります」あなたの問題を説明しています。 – user2079303

答えて

0

署名がある:だから

template<class InputIt, class T, class BinaryOp, class UnaryOp> 
T transform_reduce(InputIt first, InputIt last, 
       T init, BinaryOp binop, UnaryOp unary_op); 

、あなたのケースで:

auto max_val = 
    std::transform_reduce(start, finish, 
          lambda(*start), 
          [](const auto& lhs, const auto& rhs){ return std::max(lhs, rhs); }, 
          lambda); 

[](const auto& lhs, const auto& rhs){ return std::max(lhs, rhs); }&std::max<decltype(lambda(*start))>に置き換えることができます。

関連する問題