45 typedef typename std::iterator_traits<ForwardIterator>::value_type value_type;
47 ForwardIterator result(first);
52 ForwardIterator previous(first);
58 value_type result_difference(*first - *previous);
62 while (first != last) {
63 value_type difference(*first - *previous);
65 if (result_difference < difference) {
66 result_difference = difference;
121inline T
accumulate(InputIterator first, InputIterator last, T init, BinaryOperation binary_op) {
122 return std::accumulate(first, last, init,
123 std::bind(binary_op, std::placeholders::_1, std::placeholders::_2));
158inline T
inner_product(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, T init,
159 BinaryOperation1 binary_op1, BinaryOperation2 binary_op2) {
160 return std::inner_product(first1, last1, first2, init,
161 std::bind(binary_op1, std::placeholders::_1, std::placeholders::_2),
162 std::bind(binary_op2, std::placeholders::_1, std::placeholders::_2));
173 BinaryOperation1 binary_op1, BinaryOperation2 binary_op2) {
199inline OutputIterator
partial_sum(InputIterator first, InputIterator last, OutputIterator result,
200 BinaryOperation binary_op) {
201 return std::partial_sum(first, last, result,
202 std::bind(binary_op, std::placeholders::_1, std::placeholders::_2));
237 OutputIterator result, BinaryOperation binary_op) {
238 return std::adjacent_difference(
239 first, last, result, std::bind(binary_op, std::placeholders::_1, std::placeholders::_2));