Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ for_each(3C++) — Sun WorkShop 5.0

Media Vault

Software Library

Restoration Projects

Artifacts Sought

for_each(3C++)

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 parameters, then you always need to supply the Allocator template argument. For instance, you have to write:
 
vector<int, allocator<int> >
 
instead of:
 
vector<int>
 
If your compiler does not support namespaces, then you do not need the using declaration for std. 
 
 
 

SEE ALSO

 
 
Algorithms, Function_Objects
 

Rogue Wave Software  —  Last change: 02 Apr 1998

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026