
Module: Standard C++ Library Library: Algorithms
Function
Algorithm that applies a function to each element in a range
#include <algorithm>
namespace std {
template <class InputIterator, class Function>
void Function for_each(InputIterator start,
InputIterator finish,
Function f);
}
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.
The function object f is applied exactly finish - start times.
//
// 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
ISO/IEC 14882:1998 -- International Standard for Information Systems -- Programming Language C++, Section 25.1.1
Copyright (c) 1994-2006 Rogue Wave Software, a Quovadx Division.
Licensed under the Apache License, Version 2.0.
Contact Rogue Wave about documentation or support issues. You can also seek help from other developers through the Apache stdcxx community (see below).