📜  C++中的std :: adjacent_difference(1)

📅  最后修改于: 2023-12-03 14:39:57.404000             🧑  作者: Mango

C++中的std::adjacent_difference

在C++中,std::adjacent_difference是一个非常有用的算法,可以计算出一个给定序列中相邻元素的差异值。

语法格式
template<class InputIt, class OutputIt>
OutputIt adjacent_difference(InputIt first, InputIt last, OutputIt d_first);

InputIt表示输入迭代器的类型,OutputIt表示输出迭代器的类型。其中,输入迭代器first和last指定将要使用的序列的范围,输出迭代器d_first表示输出结果的起始位置。

算法逻辑

首先,将第一个元素复制到输出序列中,然后对于元素i(其中i [1,n-1]),计算输入序列中i处元素和i - 1处元素的差异值并将其存储在输出序列中。

示例代码
#include <iostream>
#include <vector>
#include <numeric>

using namespace std;

int main() {
    vector<int> vec{4, 5, 6, 7};
    vector<int> diff;

    adjacent_difference(vec.begin(), vec.end(), back_inserter(diff));

    cout << "原始 vector:";
    for (auto i : vec) {
        cout << " " << i;
    }

    cout << "\n相邻元素的差异值:";
    for (auto j : diff) {
        cout << " " << j;
    }

    return 0;
}

输出结果为:

原始 vector: 4 5 6 7
相邻元素的差异值: 4 1 1 1
注意事项
  • 输入序列必须至少包含一个元素。
  • 输出序列必须足够大以容纳输入序列中的元素数量。