2017-12-21 7 views
0

transform_reduce를 사용하여 숫자 세트를 변환 한 다음 해당 숫자를 최대 값으로 줄이려고합니다.transform_reduce with max_element

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에서 모든 값을 변경하는 것입니다 내가 원하는 것을 얻을 수 있도록 도와 주시겠습니까? 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))> 교체 할 수 있습니다.