所需的标头
<algorithm>
原型
template<class InputIterator, class Function> inline
Function for_each(InputIterator first,
InputIterator last,
Function F)
注意在原型中的类/参数名与在头文件版本不匹配。某些已被修改,以提高可读性。
说明
for_each 算法范围 [first, last) 中的每个元素调用函数 F,并返回输入的参数 f。此函数不会修改序列中的任何元素。
示例代码
注意在示例代码段的首行/GX 在等效于 /EHsc Visual c + +.net 中或在 Visual C + + 2005年和默认设置
- //////////////////////////////////////////////////////////////////////
- //
- // Compile options needed: /GX
- //
- // count.cpp : Illustrates how to use the for_each function.
- //
- // 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.
- //
- // Written by Kalindi Sanghrajka
- // of Microsoft Product Support Services,
- // Software Core Developer Support.
- // Copyright (c) 1996 Microsoft Corporation. All rights reserved.
- //////////////////////////////////////////////////////////////////////
- // disable warning C4786: symbol greater than 255 character,
- // okay to ignore
- #pragma warning(disable: 4786)
- #include <iostream>
- #include <vector>
- #include <algorithm>
- #if _MSC_VER > 1020 // if VC++ version is > 4.2
- using namespace std; // std c++ libs implemented in std
- #endif
- // prints the cube of integer n
- void PrintCube(int n)
- {
- cout << n * n * n << " " ;
- }
- void main()
- {
- const int VECTOR_SIZE = 8 ;
- // Define a template class vector of integers
- typedef vector<int, allocator<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" ;
- }
输出:
Numbers { 1 2 3 4 5 6 7 8 }
1 8 27 64 125 216 343 512