United States    
COMPAQ STORE | PRODUCTS | SERVICES | SUPPORT
| CONTACT US | SEARCH
C++
for_each (3C++std) - Tru64 UNIX
Standard C++ Library
Copyright 1996, Rogue Wave Software, Inc.

NAME

  for_each  - Applies a function to each element in a range.

SYNOPSIS

  #include <algorithm>

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

DESCRIPTION

  The for_each algorithm applies function f to all members of the sequence in
  the range [first, last), where first and last are iterators that define the
  sequence.  Since this a non-mutating algorithm, the function f cannot make
  any modifications to the sequence, but it can achieve results through side
  effects (such as copying or printing).  If f returns a result, the result
  is ignored.

COMPLEXITY

  The function f is applied exactly last - first times.

EXAMPLE

  //
  // for_each.cpp
  //
  #include <vector>
  #include <algorithm>
  #include <iostream.h>

   // Function class that outputs its argument times x
  template <class Arg>
  class out_times_x :  private unary_function<Arg,void>
   {
    private:
       Arg multiplier;

    public:
       out_times_x(const Arg& x) : multiplier(x) { }
       void operator()(const Arg& x)
           { cout << x * multiplier << " " << endl; }
   };

  int main()
   {
    int sequence[5] = {1,2,3,4,5};

     // Set up a vector
    vector<int> v(sequence,sequence + 5);

     // Setup a function object
    out_times_x<int> f2(2);

     for_each(v.begin(),v.end(),f2);   // Apply function

    return 0;
   }

  Output : 2 4 6 8 10

WARNING

  If your compiler does not support default template parameters then you need
  to always supply the Allocator template argument.  For instance you'll have
  to write:

  vector<int, allocator<int> >

  instead of:

  vector<int>

SEE ALSO

  Algorithms, function object

STANDARDS CONFORMANCE

  ANSI X3J16/ISO WG21 Joint C++ Committee
  

1.800.AT.COMPAQ

privacy and legal statement