VMS Help
CXXLSTD, Algorithms, for_each

 *Conan The Librarian

 			   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
  Close     Help