首页 > 编程 > C++ > 正文

c++之std::accumulate连续操作如累加累积等

2019-11-08 18:48:31
字体:
来源:转载
供稿:网友
#include <iostream>#include <functional> #include <numeric>#include <string>#include <vector>using namespace std;//http://www.cplusplus.com/reference/numeric/accumulate/// accumulate example//100 10 20 30=>100+10*2+20*2+30*2=220int myfunction(int x, int y){	int ret = x + 2 * y;	return ret;}struct myclass {	//100 10 20 30=>100+10*3+20*3+30*3=280	int Operator()(int x, int y) { 		int ret = x + 3 * y;		return ret; 	}} myobject;int test_accumulate002() {	int init = 100;	int numbers[] = { 10, 20, 30 };	std::cout << "using default accumulate: ";	std::cout << std::accumulate(numbers, numbers + 3, init);//初始值为init=100 累加	std::cout << '/n';	std::cout << "using functional's minus: ";	std::cout << std::accumulate(numbers, numbers + 3, init, std::minus<int>());//初始值为init=100 连续减	std::cout << '/n';	std::cout << "using custom function: ";	std::cout << std::accumulate(numbers, numbers + 3, init, myfunction);//初始值为init=100 元素间连续执行myfunction操作	std::cout << '/n';	std::cout << "using custom object: ";	std::cout << std::accumulate(numbers, numbers + 3, init, myobject);//初始值为init=100 元素间连续执行myobject ()操作	std::cout << '/n';	return 0;}//http://en.cpPReference.com/w/cpp/algorithm/accumulate//c++之std::accumulate连续操作如累加累积等//template <class InputIterator, class T> T accumulate(InputIterator first, InputIterator last, T init)//连续操作,默认操作是添加的元素,但不同的操作可以被指定为binary_op。int main(int argc, char const *argv[]){	int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };	size_t size = sizeof(arr) / sizeof(arr[0]);	cout <<"连加="<<std::accumulate(arr, arr + size, 0) << endl;//累积  连加	cout <<"连乘="<< std::accumulate(arr, arr + size,		1,// 累加器初始值。		multiplies<int>()) << endl;//累积  连乘	vector<int> v{ 1, 2, 3, 4, 5, 6, 7, 8, 9 };	std::string s = std::accumulate(std::next(v.begin()), v.end(),		std::to_string(v[0]), // start with first element 累加器初始值。		[](std::string a, int b) {		return a + '-' + std::to_string(b);	});	cout << "链接=" << s << endl;	test_accumulate002();	system("pause");	return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选