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
廣告