SGI

偏和

类别: 算法 组件类型: 函数

原型

Partial_sum是一个重载的名称;实际上有两个偏和函数。
template <class InputIterator, class OutputIterator>
OutputIterator partial_sum(InputIterator first, InputIterator last,
                           OutputIterator result);

template <class InputIterator, class OutputIterator, class BinaryOperation>
OutputIterator partial_sum(InputIterator first, InputIterator last,
                           OutputIterator result, BinaryOperation binary_op);

描述

Partial_sum计算广义偏和*first被赋值给*result, 的和*first以及*(first + 1)被赋值给*(result + 1), 等等。 [1]

更准确地说,运行总和首先初始化为*first并赋值给*result。对于每个迭代器i[first + 1, last)中,从开始到结束的顺序,总和通过sum = sum + *i(在第一个版本中)或sum = binary_op(sum, *i)(在第二个版本中)更新,并赋值给*(result + (i - first)). [2]

定义

在标准头文件 numeric 中定义,并在非标准向后兼容头文件 algo.h 中定义。

类型要求

对于第一个版本对于第二个版本

先决条件

复杂度

线性。如果[first, last)是一个空范围,则二元运算的应用次数为零,否则正好为(last - first) - 1次应用。

示例

int main()
{
  const int N = 10;
  int A[N];

  fill(A, A+N, 1);
  cout << "A:                 ";
  copy(A, A+N, ostream_iterator<int>(cout, " "));
  cout << endl;

  cout << "Partial sums of A: ";
  partial_sum(A, A+N, ostream_iterator<int>(cout, " "));
  cout << endl;
}  

注释

[1] 注意result允许与first是相同的迭代器。这对于“就地”计算偏和很有用。

[2] 二元运算不需要是结合的或交换的:所有运算的顺序都是指定的。

另请参阅

邻接差, 累加, 内积, 计数
[Silicon Surf] [STL Home]
版权所有 © 1999 Silicon Graphics, Inc. 保留所有权利。 商标信息