1[/ 2 Copyright 2010 Neil Groves 3 Distributed under the Boost Software License, Version 1.0. 4 (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 5/] 6[section:adjacent_difference adjacent_difference] 7 8[heading Prototype] 9 10`` 11template< 12 class SinglePassRange, 13 class OutputIterator 14 > 15OutputIterator adjacent_difference( 16 const SinglePassRange& source_rng, 17 OutputIterator out_it); 18 19template< 20 class SinglePassRange, 21 class OutputIterator, 22 class BinaryOperation 23 > 24OutputIterator adjacent_difference( 25 const SinglePassRange& source_rng, 26 OutputIterator out_it, 27 BinaryOperation op); 28`` 29 30[heading Description] 31 32`adjacent_difference` calculates the differences of adjacent_elements in `rng`. 33 34The first version of `adjacent_difference` uses `operator-()` to calculate the differences. 35The second version uses `BinaryOperation` instead of `operator-()`. 36 37[heading Definition] 38 39Defined in the header file `boost/range/numeric.hpp` 40 41[heading Requirements] 42 43[heading For the first version] 44 45# `SinglePassRange` is a model of the __single_pass_range__ Concept. 46# `OutputIterator` is a model of the `OutputIteratorConcept`. 47# If `x` and `y` are objects of `SinglePassRange`'s value type, then `x - y` is defined. 48# The value type of `SinglePassRange` is convertible to a type in `OutputIterator`'s set of value types. 49# The return type of `x - y` is convertible to a type in `OutputIterator`'s set of value types. 50 51[heading For the second version] 52 53# `SinglePassRange` is a model of the __single_pass_range__ Concept. 54# `OutputIterator` is a model of the `OutputIteratorConcept`. 55# `BinaryOperation` is a model of the `BinaryFunctionConcept`. 56# The value type of `SinglePassRange` is convertible to `BinaryOperation`'s first and second argument types. 57# The value type of `SinglePassRange` is convertible to a type in `OutputIterator`'s set of value types. 58# The result type of `BinaryOperation` is convertible to a type in `OutputIterator`'s set of value types. 59 60[heading Precondition:] 61 62`[result, result + distance(rng))` is a valid range. 63 64[heading Complexity] 65 66Linear. If `empty(rng)` then zero applications, otherwise `distance(rng) - 1` applications are performed. 67 68[endsect] 69