# Man Page for_each.3

```
Standard C++ Library
Copyright 1998, 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 <functional>
#include <iostream>
using namespace std;

// 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;
}

Program Output

2
4
6
8
10

```

## WARNINGS

```     If your compiler does not support default  template  parame-
ters,  then you always need to supply the Allocator template
argument. For instance, you have to write:

vector<int, allocator<int> >

vector<int>

If your compiler does not support namespaces,  then  you  do
not need the using declaration for std.

```

```     Algorithms, Function_Objects

```