for_each
abs
TOC
Collapse the table of content
Expand the table of content
Important This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here. ArchiveDisclaimer

for_each

Illustrates how to use the for_each Standard Template Library (STL) function in Visual C++.

template<class InputIterator, class Function> inline
   Function for_each(
      InputIterator First,
      InputIterator Last,
      Function F
   )
Note   The class/parameter names in the prototype do not match the version in the header file. Some have been modified to improve readability.

Remarks

The for_each algorithm calls Function F for each element in the range [First, Last) and returns the input parameter F. This function does not modify any elements in the sequence.

Example

// foreach.cpp
// compile with: /EHsc
//
// Functions:
//   for_each  - Calls function F for every element in a range.
//
//   begin     - Returns an iterator that points to the first element
//               in a sequence.
//
//   end       - Returns an iterator that points one past the end of
//               a sequence.

// disable warning C4786: symbol greater than 255 characters,
// okay to ignore
#pragma warning(disable: 4786)

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

// prints the cube of integer n
void PrintCube(int n)
{
    cout << n * n * n << " " ;
}

int main()
{
    const int VECTOR_SIZE = 8 ;

    // Define a template class vector of integers
    typedef vector<int > IntVector ;

    //Define an iterator for template class vector of integer
    typedef IntVector::iterator IntVectorIt ;

    IntVector Numbers(VECTOR_SIZE) ;   //vector containing numbers

    IntVectorIt start, end, it ;

    int i ;

    // Initialize vector Numbers
    for (i = 0; i < VECTOR_SIZE; i++)
        Numbers[i] = i + 1 ;

    start = Numbers.begin() ;   // location of first
                                // element of Numbers

    end = Numbers.end() ;       // one past the location
                                // last element of Numbers

    // print content of Numbers
    cout << "Numbers { " ;
    for(it = start; it != end; it++)
        cout << *it << " " ;
    cout << " }\n" << endl ;

    // for each element in the range [first, last)
    // print the cube of the element
    for_each(start, end, PrintCube) ;
    cout << "\n\n" ;
}

Output

Numbers { 1 2 3 4 5 6 7 8  }

1 8 27 64 125 216 343 512 

Requirements

Header: <algorithm>

See Also

Standard Template Library Samples

Show:
© 2016 Microsoft