首页 理论教育 部分和算法partial

部分和算法partial

时间:2023-10-25 理论教育 版权反馈
【摘要】:partial_sum()算法的功能是对迭代器[_First,_Last]确定范围内的元素进行部分求和。partial_sum()算法的原型为:其中,第一种形式用于计算源区间[_First,_Last]中每个元素的部分和,然后将结果写入以result为起点的目标区间;第二种形式包含了一个谓词_Binary_op,对源区间中的每个元素进行_Binary_op处理。通过以上描述可知,对于序列a,b,c,d,partial_sum使用()算法可产生序列a,a+b,a+b+c,a+b+c+d。下面以例6-12说明partial_sum()算法的使用方法。

部分和算法partial_sum改为STL部分和算法

partial_sum()算法的功能是对迭代器[_First,_Last]确定范围内的元素进行部分求和。其计算结果保存在以_Result为起始的序列中。部分求和的计算步骤:首先,把原序列的第1个元素赋值给新序列的第1个元素;其次,把原序列的前两个元素相加,把结果赋值给新序列的第2个元素;再次,把原序列的第2和第3个元素相加,把结果赋值给新序列的第3个元素;以此类推,直到计算完原序列的全部元素为止。

partial_sum()算法的原型为:

978-7-111-51399-5-Chapter06-90.jpg

其中,第一种形式用于计算源区间[_First,_Last]中每个元素的部分和,然后将结果写入以result为起点的目标区间;第二种形式包含了一个谓词_Binary_op,对源区间中的每个元素进行_Binary_op处理。

通过以上描述可知,对于序列a,b,c,d,partial_sum使用()算法可产生序列a,a+b,a+b+c,a+b+c+d。

需要注意的问题如:

1)两种形式都返回目标区间内“最后一个被写入的值”的下一位置。

2)源区间和目标区间可以相同。

3)程序员必须确保目标区间足够大,否则需要使用插入型迭代器。

4)谓词_Binary_op不允许修改传入其内的参数。

目前参考资料给出的谓词多为multiplies<T>()等类型。(www.xing528.com)

下面以例6-12说明partial_sum()算法的使用方法。其中给出的谓词为自定义函数。

例6-12

978-7-111-51399-5-Chapter06-91.jpg

978-7-111-51399-5-Chapter06-92.jpg

例6-12的执行效果如图6-12所示。

978-7-111-51399-5-Chapter06-93.jpg

图6-12 例6-12的执行效果

总结

读者认真阅读例题,尤其注意谓词函数的定义。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈