Перевод этой страницы?:

adjacent_difference

Синтаксис:

    #include <numeric>
    output_iterator adjacent_difference( input_iterator start, input_iterator end, output_iterator result );
    output_iterator adjacent_difference( input_iterator start, input_iterator end, output_iterator result, BinaryFunction f );

Функция adjacent_difference() вычисляет разницу между смежными элементами диапазона [start,end), и располагает результат начиная с итератора result. (Конкретнее говоря, элемент с позиции start копируется в позицию result, а затем разница между элементами в позиции start + i и start + (i-1) располагается в позицию result + i).

Если задана бинарная функция f, то она используется вместо оператора -, чтобы вычислить разность. adjacent_difference() работает за линейное время.

Следующий пример показывает разность между смежными элементами вектора:

 #include <algorithm>
 #include <iostream>
 #include <iterator>
 #include <numeric>
 #include <vector>
 
 int main()
 {
   std::vector<int> v;
   for (int i = 3; i <= 10; ++i)
     v.push_back(i);
 
   // display elements of v
   std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
 
   std::cout << std::endl;
 
   // display all differences between elements
   std::adjacent_difference(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
 
   return 0;
 }

Этот код дает следующий вывод:

 3 4 5 6 7 8 9 10
 3 1 1 1 1 1 1 1

Смотрите также: accumulate, count, inner_product, partial_sum