C++ Numeric::adjacent_difference() 函数



C++ 的 std::numeric::adjacent_difference() 函数用于返回范围中连续元素之间的差值,并将结果存储到另一个范围中,从第一个元素开始。第一个元素直接复制到输出,后续元素是当前元素减去前一个元素的结果。

语法

以下是 std::numeric::adjacent_difference() 函数的语法。

adjacent_difference (InputIterator first, InputIterator last, OutputIterator result);
or
adjacent_difference ( InputIterator first, InputIterator last, OutputIterator result, BinaryOperation binary_op );

参数

  • first, last − 指示序列中初始和最终位置的迭代器。
  • init − 累加器的初始值。
  • binary_op − 二元运算符。

返回值

返回一个迭代器,指向存储结果元素的目标序列的最后一个元素之后的位置。

异常

如果任何二元运算符、赋值或迭代器操作抛出异常,则抛出异常。

数据竞争

访问范围 [first1,last1) 中的元素。

示例 1

在下面的示例中,我们将考虑 adjacent_difference() 函数的基本用法。

#include <iostream>
#include <numeric>
#include <vector>
int main() {
   std::vector < int > x = {11,23,12,32};
   std::vector < int > y(x.size());
   std::adjacent_difference(x.begin(), x.end(), y.begin());
   for (int n: y) {
      std::cout << n << " ";
   }
   return 0;
}

输出

以上代码的输出如下:

11 12 -11 20

示例 2

考虑以下示例,我们将使用自定义二元运算符。

#include <iostream>
#include <numeric>
#include <vector>
int main() {
   std::vector < int > a = {2,31,2,3,4};
   std::vector < int > b(a.size());
   std::adjacent_difference(a.begin(), a.end(), b.begin(), std::multiplies < int > ());
   for (int n: b) {
      std::cout << n << " ";
   }
   return 0;
}

输出

以上代码的输出如下:

2 62 62 6 12
numeric.htm
广告
© . All rights reserved.