blob: 83ecdd569661935afca865a3c02d6c77d78f203b [file] [log] [blame]
 for_each()
Apache C++ Standard Library Reference Guide

for_each()

Library:  Algorithms

Function

Local Index

No Entries

Summary

Algorithm that applies a function to each element in a range

Synopsis

#include <algorithm>

namespace std {
template <class InputIterator, class Function>
void Function for_each(InputIterator start,
InputIterator finish,
Function f);
}

Description

The for_each() algorithm applies the function object f to each value in the range [start, finish), where start and finish 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.

for_each() returns the function object f.

Complexity

The function object f is applied exactly finish - start times.

Example

//
// for_each.cpp
//

#include <algorithm>    // for for_each
#include <functional>   // for less, unary_function
#include <iostream>     // for cout, endl
#include <set>          // for set

// Function object that outputs its argument times x.
template <class Arg>
class out_times_x:  public std::unary_function<Arg, void>
{
Arg multiplier;
public:
out_times_x(const Arg &x) : multiplier (x) { }

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

int main ()
{
// Typedef for convenience.
typedef std::set<int, std::less<int>,
std::allocator<int> > sequence;

sequence::value_type arr [] = { 1, 2, 3, 4, 5 };

// Populate a sequence from arr.
sequence s(arr, arr + sizeof arr / sizeof *arr);

// Construct a function object.
out_times_x<sequence::value_type> f2(2);

// Apply function object's operator() to each element.
std::for_each(s.begin(), s.end(), f2);

return 0;
}

Program Output

2
4
6
8
10

See Also

Algorithms, Function Objects

Standards Conformance

ISO/IEC 14882:1998 -- International Standard for Information Systems -- Programming Language C++, Section 25.1.1