template <class InputIterator1, class InputIterator2, class T>
T inner_product(InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, T init);
template <class InputIterator1, class InputIterator2, class T,
class BinaryOperation1, class BinaryOperation2>
T inner_product(InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, T init,
BinaryOperation1 binary_op1,
BinaryOperation2 binary_op2);
Requires:
T shall meet the requirements of
CopyConstructible (Table
24)
and
CopyAssignable (Table
26) types
. In the ranges
[first1, last1]
and
[first2, first2 + (last1 - first1)]
binary_op1
and
binary_op2
shall neither modify elements nor invalidate iterators or subranges
.Effects:
Computes its result by initializing the accumulator
acc
with the initial value
init
and then modifying it with
acc = acc + (*i1) * (*i2)
or
acc = binary_op1(acc, binary_op2(*i1, *i2))
for every iterator
i1
in the range
[first1, last1)
and iterator
i2
in the range
[first2, first2 + (last1 - first1))
in order
.