首页 理论教育 C++STL精解:内积算法inner_produc

C++STL精解:内积算法inner_produc

时间:2023-10-25 理论教育 版权反馈
【摘要】:具体来说,即针对“两区间内的每一组对应元素”调用以下表达式:第二种形式对区间[beg,end]和“以beg2为起始区间”内的对应元素进行op2运算,然后再和initValue进行op1运算,并将结果返回。2)程序员必须确保“以beg2为起始的区间”内含足够的元素空间。4)op1和op2两个函数或两个谓词,均是两个参数。下面以例6-11为例说明内积算法的使用方法。例6-11总结多数内积算法的例题中,op1和op2采用的是multiplies<int>()和plus<int>()。

C++STL精解:内积算法inner_produc

内积是通过把第一个序列中的元素与第二个序列中相同位置的元素进行相乘,然后把计算的结果相加而得到。内积算法的原型为:

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

第一种形式用于计算并返回[beg,end]和“以beg2为起始的区间”的对应元素组的内积。具体来说,即针对“两区间内的每一组对应元素”调用以下表达式:

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

第二种形式对区间[beg,end]和“以beg2为起始区间”内的对应元素进行op2运算,然后再和initValue进行op1运算,并将结果返回。具体来说,即针对“两区间内的每一组对应元素”调用以下表达式:

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

由上述内容可知,对于两个数值序列:

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

使用上述两种算法分别计算并返回:

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

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

需要注意以下几点:(www.xing528.com)

1)若第一个区间为空,则两者返回initValue。

2)程序员必须确保“以beg2为起始的区间”内含足够的元素空间。

3)谓词(或函数)op1和op2都不允许修改传入其内的参数。

4)op1和op2两个函数或两个谓词,均是两个参数。

下面以例6-11为例说明内积算法的使用方法。

例6-11

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

总结

多数内积算法的例题中,op1和op2采用的是multiplies<int>()和plus<int>()。这样定义op1和op2,读者并不能确切地理解op1和op2到底是如何进行运算的。本例定义了两个自定义谓词op1和op2,代码清楚,功能简单,便于读者理解。

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

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

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

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

我要反馈