transform_reduce with max_element

问题描述 投票:0回答:1

我试图使用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)到函数(绑定),然后使用这些值,给我最大的,但我有问题,任何人都可以帮助我想要我想要实现?

c++ algorithm transform reduce
1个回答
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))>取代。

© www.soinside.com 2019 - 2024. All rights reserved.