adjacent_difference算法

来源:互联网 发布:逛淘宝需要流量吗 编辑:程序博客网 时间:2024/06/05 01:17

adjacent_difference算法的主要用途是计算相邻元素的差额


函数模板

//adjacent_difference.htemplate <typename InputIterator, typename OutputIterator>OutputIterator adjacent_difference(InputIterator first, InputIterator last, OutputIterator result) {if(first == last) {return result;}*result = *first;iterator_traits<InputIterator>::value_type value = *first;while(++first != last) {*++result = *first - value;value = *first;}return ++result;}template <typename InputIterator, typename OutputIterator, typename BinaryOperation>OutputIterator adjacent_difference(InputIterator first, InputIterator last, OutputIterator result, BinaryOperation binary_op) {if(first == last) {return result;}*result = *first;iterator_traits<InputIterator>::value_type value = *first;while(++first != last) {*++result = binary_op(*first, value);value = *first;}return ++result;}

测试代码:

//main.cpp  #include <iostream>  #include "adjacent_difference.h"  #include <vector>#include <iterator>      using namespace std;        int main(void) {      int a[5] = {0, 1, 2, 3, 4};      vector<int> ivec(a, a+5);      ostream_iterator<int> oite(cout, " ");adjacent_difference(ivec.begin(), ivec.end(), oite);// 0 1 1 1 1cout << endl;adjacent_difference(ivec.begin(), ivec.end(), oite, plus<int>());// 0 1 3 5 7    system("pause");      return 0;  }  



原创粉丝点击