template <class InputIterator1, class InputIterator2, class T>
T transform_reduce(InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2,
T init);
template <class ExecutionPolicy,
class ForwardIterator1, class ForwardIterator2, class T>
T transform_reduce(ExecutionPolicy&& exec,
ForwardIterator1 first1, ForwardIterator1 last1,
ForwardIterator2 first2,
T init);
Effects: Equivalent to:
return transform_reduce(first1, last1, first2, init, plus<>(), multiplies<>());
template <class InputIterator1, class InputIterator2, class T,
class BinaryOperation1, class BinaryOperation2>
T transform_reduce(InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2,
T init,
BinaryOperation1 binary_op1,
BinaryOperation2 binary_op2);
template <class ExecutionPolicy,
class ForwardIterator1, class ForwardIterator2, class T,
class BinaryOperation1, class BinaryOperation2>
T transform_reduce(ExecutionPolicy&& exec,
ForwardIterator1 first1, ForwardIterator1 last1,
ForwardIterator2 first2,
T init,
BinaryOperation1 binary_op1,
BinaryOperation2 binary_op2);
Requires:
T shall be
MoveConstructible (Table
23)
. All of
binary_op1(init, init),
binary_op1(init, binary_op2(*first1, *first2)),
binary_op1(binary_op2(*first1, *first2), init), and
binary_op1(binary_op2(*first1, *first2), binary_op2(*first1, *first2))
shall be convertible to
T.Neither
binary_op1 nor
binary_op2 shall invalidate
subranges, or modify elements in the ranges
[first1, last1] and
[first2, first2 + (last1 - first1)].
Returns:
GENERALIZED_SUM(binary_op1, init, binary_op2(*i, *(first2 + (i - first1))), ...)
for every iterator
i in
[first1, last1). Complexity: applications each of
binary_op1 and
binary_op2. template<class InputIterator, class T,
class BinaryOperation, class UnaryOperation>
T transform_reduce(InputIterator first, InputIterator last, T init,
BinaryOperation binary_op, UnaryOperation unary_op);
template<class ExecutionPolicy,
class ForwardIterator, class T,
class BinaryOperation, class UnaryOperation>
T transform_reduce(ExecutionPolicy&& exec,
ForwardIterator first, ForwardIterator last,
T init, BinaryOperation binary_op, UnaryOperation unary_op);
Requires:
T shall be
MoveConstructible (Table
23)
. All of
binary_op(init, init),
binary_op(init, unary_op(*first)),
binary_op(unary_op(*first), init), and
binary_op(unary_op(*first), unary_op(*first))
shall be convertible to
T.Neither
unary_op nor
binary_op shall invalidate subranges,
or modify elements in the range
[first, last].
Returns:
GENERALIZED_SUM(binary_op, init, unary_op(*i), ...)
for every iterator
i in
[first, last). Complexity:
applications each of
unary_op and
binary_op. [
Note: transform_reduce does not apply
unary_op to
init. —
end note ]