< cpp‎ | algorithm

C++
 Language Standard library headers Concepts Utilities library Strings library Containers library Algorithms library Iterators library Numerics library Input/output library Localizations library Regular expressions library (C++11) Atomic operations library (C++11) Thread support library (C++11) Technical Specifications

Algorithm library
Functions
Non-modifying sequence operations
 all_ofany_ofnone_of (C++11)(C++11)(C++11) for_each countcount_if mismatch equal
Modifying sequence operations
 copycopy_if (C++11) copy_n (C++11) copy_backward move (C++11) move_backward (C++11) fill fill_n transform generate generate_n removeremove_if remove_copyremove_copy_if
Partitioning operations
 is_partitioned (C++11) partition partition_copy (C++11)
 stable_partition partition_point (C++11)
Sorting operations (on sorted ranges)
 is_sorted (C++11) is_sorted_until (C++11) sort
Binary search operations (on sorted ranges)
Set operations (on sorted ranges)
Heap operations
 is_heap (C++11) is_heap_until (C++11) make_heap
Minimum/maximum operations
 max max_element min min_element minmax (C++11) minmax_element (C++11)
Numeric operations
 iota (C++11) accumulate inner_product
C library

 Defined in header `` template< class InputIt, class OutputIt > OutputIt adjacent_difference( InputIt first, InputIt last,                               OutputIt d_first ); (1) template< class InputIt, class OutputIt, class BinaryOperation > OutputIt adjacent_difference( InputIt first, InputIt last,                               OutputIt d_first, BinaryOperation op ); (2)

Computes the differences between the second and the first of each adjacent pair of elements of the range `[first, last)` and writes them to the range beginning at `d_first + 1`. Unmodified copy of `first` is written to `d_first`. The first version uses `operator-` to calculate the differences, the second version uses the given binary function `op`.

Equivalent operation:

```*(d_first)   = *first;
*(d_first+1) = *(first+1) - *(first);
*(d_first+2) = *(first+2) - *(first+1);
*(d_first+3) = *(first+3) - *(first+2);
...```
 `op` must not have side effects. (until C++11) `op` must not invalidate any iterators, including the end iterators, or modify any elements of the ranges involved. (since C++11)

## Contents

### Parameters

 first, last - the range of elements d_first - the beginning of the destination range op - binary operation function object that will be applied. The signature of the function should be equivalent to the following:  Ret fun(const Type1 &a, const Type2 &b); The signature does not need to have const &. The types Type1 and Type2 must be such that an object of type iterator_traits::value_type can be implicitly converted to both of them. The type Ret must be such that an object of type OutputIt can be dereferenced and assigned a value of type Ret. ​ Type requirements - `InputIt` must meet the requirements of `InputIterator`. - `OutputIt` must meet the requirements of `OutputIterator`.

### Return value

It to the element past the last element written.