STL:accumulate

3 篇文章 0 订阅

1. accumulate()可以用来计算数组或者容器中的内置数据类型;

2. #include<numeric.h>

3. 常用例子:

	int arr[]={1,2,3,4};
	<pre name="code" class="cpp">	vector<int> num(<span style="font-family: Arial, Helvetica, sans-serif;">&arr[0], &arr[4]</span><span style="font-family: Arial, Helvetica, sans-serif;">);   //数组对容器进行初始化</span>
int result1 = accumulate(num.begin(),num.end(),0);int result2 = accumulate(&arr[0], &arr[4],0);

 
  • 注意1:accumulate()一共有四个参数:第一个参数指需要求和的第一个地址;第二个参数值需要求和的第二个地址;第三个参数表示求和的初始值(一般为0);第四个参数指自己定义。
  • 注意2:accumulate()是左闭右开的;[ )

4. 如果需要求和自己定义的数据类型,则需要重载();

struct Student
{

	string name;
	double total;
	//Student(string na, double to):name(na),total(to){}

	double operator () (double base, const Student &stu)
	{
		return base+stu.total;
	}
};


int main()  
{  
	//Student stu[2]={{"zhangsan",97.5}, {"lisi",92.3}};  注意vc6编译器不支持对结构体进行一次性初始化,需要进行分开初始化
	Student stu[2];
	stu[0].name = "zhangsan";
	stu[0].total = 97.3;
	stu[1].name = "lisi";
	stu[1].total = 95.5;
	double result = accumulate(&stu[0], &stu[2], 0.0, Student() );  //注意:这儿是double,所以第三个参数必须写成0.0,不然会四舍五入了
	cout<<result<<endl;
	return 0;
}  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值