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

#include 
#include  
#include 
#include 
#include 

using namespace std;

//http://www.cplusplus.com/reference/numeric/accumulate/
// accumulate example

//100 10 20 30=>100+10*2+20*2+30*2=220
int 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());//初始值为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  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 <<"连加="<

你可能感兴趣的:(c/c++)