◆ adjacent_difference() [3/4]

template<typename InputIterator , typename OutputIterator >
OutputIterator thrust::adjacent_difference ( InputIterator  first,
InputIterator  last,
OutputIterator  result 

adjacent_difference calculates the differences of adjacent elements in the range [first, last). That is, *first is assigned to *result, and, for each iterator i in the range [first + 1, last), the difference of *i and *(i - 1) is assigned to *(result + (i - first)).

This version of adjacent_difference uses operator- to calculate differences.

firstThe beginning of the input range.
lastThe end of the input range.
resultThe beginning of the output range.
The iterator result + (last - first)
Template Parameters
InputIteratoris a model of Input Iterator, and x and y are objects of InputIterator's value_type, then x - is defined, and InputIterator's value_type is convertible to a type in OutputIterator's set of value_types, and the return type of x - y is convertible to a type in OutputIterator's set of value_types.
OutputIteratoris a model of Output Iterator.
Note that result is permitted to be the same iterator as first. This is useful for computing differences "in place".

The following code snippet demonstrates how to use adjacent_difference to compute the difference between adjacent elements of a range.

int h_data[8] = {1, 2, 1, 2, 1, 2, 1, 2};
thrust::device_vector<int> d_data(h_data, h_data + 8);
thrust::adjacent_difference(d_data.begin(), d_data.end(), d_result.begin());
// d_result is now [1, 1, -1, 1, -1, 1, -1, 1]
See also