transform_reduce with max_element

时间:2017-12-21 01:16:28

标签: c++ algorithm transform reduce

我正在尝试使用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 个答案:

答案 0 :(得分:0)

std::transform_reduce(需要一个范围)的签名是:

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))>