G.5.4 数值运算
表G.16对数值运算进行了总结,这些操作是由头文件numeric描述的。其中没有列出参数,而重载函数也只列出了一次。每一个函数都有一个使用<对元素进行排序的版本和一个使用比较函数对象对元素进行排序的版本。表后做了更详细的说明,其中包括原型。因此,可以浏览该表,以了解函数的功能;如果对某个函数非常感兴趣,则可以了解其细节。
表G.16数值运算
|
函 数< xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> |
描 述 |
|
accumulate( ) |
计算区间中的值的总和 |
|
inner_product( ) |
计算2个区间的内部乘积 |
|
partial_sum( ) |
将使用一个区间计算得到的小计复制到另一个区间中 |
|
adjacent_difference( ) |
将使用一个区间的元素计算得到的相邻差
集复制到另一个区间中 |
|
iota( ) |
将使用运算符++生成的一系列相邻的值赋给
一个区间中的元素,这是C++(www.cppentry.com)11新增的 |
1.accumulate( )
accumulate( )函数将acc的值初始化为init,然后按顺序对[first, last]区间中的每一个迭代器i执行acc = acc + * i(第一个版本)或acc = binary_op(acc, *i)(第二个版本)。然后返回acc的值。
2.inner_product( )
inner_product( )函数将acc的值初始化为init,然后按顺序对[first1, last1]区间中的每一个迭代器i和[first2, first2 + (last1 first1)]区间中对应的迭代器j执行acc = * i * * j(第一个版本)或acc = binary_op(*i, *j)(第二个版本)。也就是说,该函数对每个序列的第一个元素进行计算,得到一个值,然后对每个序列中的第二个元素进行计算,得到另一个值,依此类推,直到到达第一个序列的结尾(因此,第二个序列至少应同第一个序列一样长)。然后,函数返回acc的值。
3.partial_sum( )
partial_sum( )函数将*first赋给*result,将*first + *(first + 1)赋给*(result + 1)(第一个版本),或者将binary_op(*first, *(first + 1))赋给*(result + 1)(第二个版本),依此类推。也就是说,从result开始的序列的第n个元素将包含从first开始的序列的前n个元素的总和(或binary_op的等价物)。该函数返回结果的超尾迭代器。该算法允许result等于first,也就是说,如果需要,该算法允许使用结果覆盖原来的序列。
4.adjacent_difference( )
adjacent_difference( )函数将*first赋给result(*result = *first)。目标区间中随后的位置将被赋值为源区间中相邻位置的差集(或binary_op等价物)。也就是说,目标区间的下一个位置(result +1)将被赋值为*(first + 1) - * first(第一个版本)或binary_op(*(first + 1), * first)(第二个版本),依此类推。该函数返回结果的超尾迭代器。该算法允许result等于first,也就是说,如果需要,该算法允许结果覆盖原来的序列。
5.iota( )(C++(www.cppentry.com)11)
函数iota( )将value赋给*first,再将value递增(就像执行运算++value),并将结果赋给下一个元素,依次类推,直到最后一个元素。