adjacent_difference 的使用

8 篇文章 0 订阅

adjacent_difference 的使用

adjacent_difference是 STL 算法组件中的算法。adjacent_difference 的作用:计算返回相邻元素的差值。

下面以vector容器和int数组为例:
adjacent_difference
代码:

#include <iostream>
#include <vector>
#include <numeric>
using namespace std;

// 输出 vector 容器
void showV(vector<int> v)
{
	vector<int>::iterator vi;//迭代器
	for (vi = v.begin(); vi < v.end(); vi++) { cout << *vi << " "; }
	cout << endl;
}
// 输出 数组
void showArray(int a[], int n)
{
	for (int i = 0; i < n; i++) { cout << a[i] << " "; }
	cout << endl;
}
// 函数,返回 两个数之和
int myfunc(int i, int j) { return i + j; }

void main2()// adjacent_difference
{
	//创建两个容器 和 两个数组
	vector<int> v = { 3,4,7,15,20,30,70,100,205,300 };
	vector<int> v2(10);
	vector<int> v3(10);
	int arr[10] = { 21,22,23,24,25,26,27,28,29,30 };
	int arr2[10] = { 0 };
	int arr3[10] = { 0 };
	int arr4[10] = { 0 };
	int arr5[10] = { 0 };

	cout << "执行算法要遍历的对象:" << endl;
	cout << "v:\t";		showV(v);
	cout << "arr:\t";	showArray(arr, 10);

	// 遍历容器,用容器接收结果
	adjacent_difference(v.begin(), v.end(), v2.begin());
	adjacent_difference(v.begin(), v.end(), v3.begin(), myfunc);
	
	// 遍历容器,用数组接收结果
	adjacent_difference(v.begin(), v.end(), arr2);
	adjacent_difference(v.begin(), v.end(), arr3, myfunc);
	
	// 遍历数组,用数组接收结果
	adjacent_difference(arr, arr + 9, arr4);
	adjacent_difference(arr, arr + 9, arr5, myfunc);
	
	// 遍历容器,用容器自身接收结果
	adjacent_difference(v.begin(), v.end(), v.begin());

	cout << "\n执行算法后,结果显示:" << endl;
	
	cout << "\n遍历数组,用容器接收结果\n";
	cout << "v2:\t";	showV(v2);
	cout << "v3:\t";	showV(v3);
	
	cout << "\n遍历容器,用数组接收结果\n";
	cout << "arr2:\t";	showArray(arr2, 10);
	cout << "arr3:\t";	showArray(arr3, 10);
	
	cout << "\n遍历数组,用数组接收结果\n";
	cout << "arr4:\t";	showArray(arr4, 10);
	cout << "arr5:\t";	showArray(arr5, 10);
	
	cout << "\n遍历容器,用容器自身接收结果\n";
	cout << "v:\t";		showV(v);
}

运行结果显示:

在这里插入图片描述
对于算法 adjacent_difference,
其默认的调用是返回相邻两个元素的差值,如上面运行结果中的 v2,arr2,arr4;

如果不想使用默认的方法,可以自行写一个函数代替算法默认调用的函数,如上面运行结果中的 v3,arr3,arr5,调用的函数返回的是两个元素的和,计算结果就是相邻两个元素的和。

adjacent_difference 实际是将相邻的两个元素传到仿函数,然后i偶获取仿函数的返回值,将返回值放置到容器(数组),至于仿函数做什么操作,可以根据实际需求写方法去实现。

adjacent_difference 可以用遍历的对象去接收执行算法后的结果(返回值),并不会产生什么冲突,但会改变遍历的对象的值,慎用。

使用 adjacent_difference 需包含头文件 numeric

感谢您的浏览。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值