SGI

for_each

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

原型

template <class InputIterator, class UnaryFunction>
UnaryFunction for_each(InputIterator first, InputIterator last, UnaryFunction f);

描述

For_each函数对象f应用于范围中的每个元素[first, last); f的返回值(如果有)将被忽略。应用按正向顺序执行,即从firstlast. For_each在函数对象应用于每个元素后返回该函数对象。 [1]

定义

定义在标准头文件 algorithm 中,以及非标准的向后兼容头文件 algo.h 中。

类型要求

前提条件

复杂度

线性。恰好last - first次应用UnaryFunction.

示例

template<class T> struct print : public unary_function<T, void>
{
  print(ostream& out) : os(out), count(0) {}
  void operator() (T x) { os << x << ' '; ++count; }
  ostream& os;
  int count;
};

int main()
{
  int A[] = {1, 4, 2, 8, 5, 7};
  const int N = sizeof(A) / sizeof(int);

  print<int> P = for_each(A, A + N, print<int>(cout));
  cout << endl << P.count << " objects printed." << endl;
}

备注

[1] 此返回值有时很有用,因为函数对象可能具有局部状态。例如,它可能计算被调用的次数,或者可能具有一个状态标志以指示调用是否成功。

另请参阅

the 函数对象概述count, copy
[Silicon Surf] [STL Home]
Copyright © 1999 Silicon Graphics, Inc. 保留所有权利。 商标信息