📅  最后修改于: 2023-12-03 14:39:57.404000             🧑  作者: Mango
在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