STL之adjacent_difference
来源:互联网 发布:vip域名被百度收录 编辑:程序博客网 时间:2024/06/04 21:31
需要的头文件:
numeric
源码:
//版本1template <class _InputIterator, class _OutputIterator>_OutputIteratoradjacent_difference(_InputIterator __first, _InputIterator __last, _OutputIterator __result){ if (__first == __last) return __result; *__result = *__first; return __adjacent_difference(__first, __last, __result, __VALUE_TYPE(__first));}template <class _InputIterator, class _OutputIterator, class _Tp>_OutputIterator __adjacent_difference(_InputIterator __first, _InputIterator __last, _OutputIterator __result, _Tp*){ _Tp __value = *__first; while (++__first != __last) { _Tp __tmp = *__first; *++__result = __tmp - __value; __value = __tmp; } return ++__result;}//版本2template <class _InputIterator, class _OutputIterator, class _BinaryOperation>_OutputIterator adjacent_difference(_InputIterator __first, _InputIterator __last, _OutputIterator __result, _BinaryOperation __binary_op){ if (__first == __last) return __result; *__result = *__first; return __adjacent_difference(__first, __last, __result, __VALUE_TYPE(__first), __binary_op);}template <class _InputIterator, class _OutputIterator, class _Tp, class _BinaryOperation>_OutputIterator__adjacent_difference(_InputIterator __first, _InputIterator __last, _OutputIterator __result, _Tp*, _BinaryOperation __binary_op) { _Tp __value = *__first; while (++__first != __last) { _Tp __tmp = *__first; *++__result = __binary_op(__tmp, __value); __value = __tmp; } return ++__result;}
作用:
用来计算[first,last)中相邻元素的差额。其过程为:
存储第一元素之值,然后存储后继两两相邻元素之差值
通过二元仿函数,我们可以将它一般化为:
存储第一元素之值,然后存储后继两两相邻元素之运算值
例子:
#include <numeric>#include <vector>#include <iostream>#include <iterator>using namespace std;int main(){ int ia[5] = { 1,2,3,4,5 }; vector<int> iv(ia, ia + 5); //作为输出 ostream_iterator<int> oiter(cout, " "); //输出iv元素间的差值 adjacent_difference(iv.begin(), iv.end(), oiter); //1 1 1 1 1 cout << endl; //输出iv元素之间的两两相加的值 adjacent_difference(iv.begin(), iv.end(), oiter, [](int a, int b) { return a + b; });//1 3 5 7 9 cout << endl;}
注意:
首先会存储第一元素之值
二元仿函数中,参数有先后。第一个参数代表前面的元素,第二个参数代表后面的元素
0 0
- STL之adjacent_difference
- STL-----------------adjacent_difference
- STL 之accumulate,adjacent_difference,inner_product,partial_sum
- STL 之accumulate,adjacent_difference,inner_product,partial_sum
- C++ STL adjacent_difference
- stl中的adjacent_difference
- STL泛型算法--adjacent_difference()
- adjacent_difference
- adjacent_difference
- adjacent_difference算法
- adjacent_difference的用法
- accumulate,inner_product,partial_sum,adjacent_difference
- C++ 使用adjacent_difference
- 【STL】STL之map
- 【STL】STL之set
- 【STL】STL之pair
- STL 5: STL之迭代器
- 【STL】STL容器之vector
- 【oracle笔记】启动、关闭数据库以及查看数据库状态
- 零基础学python-15.3 函数的定义、调用与多态
- Failed to complete gradle execution.
- 《第一行代码》读书笔记(八)----多媒体
- 窗口小部件的使用AppWidget
- STL之adjacent_difference
- Python 之 使用 PIL 库做图像处理
- 手势解锁功能的实现(案例:支付宝手势解锁界面)
- java中的进制(jdk内置的进制转换方法)
- volatile
- insert into select
- MFC中对话框的创建
- 输入一个字符串,求出该字符串的字符集
- HDU 4540 威威猫系列故事——打地鼠(树塔问题简单变形)