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