thrust

◆ 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.

Parameters
firstThe beginning of the input range.
lastThe end of the input range.
resultThe beginning of the output range.
Returns
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.
Remarks
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
http://www.sgi.com/tech/stl/adjacent_difference.html
inclusive_scan