算法详解
for_each( )算法非常的灵活,它可以不用的方式存取,处理,修改每一个元素。
接口
Function for_each(InputIterator _First, InputIterator _Last, Function _Func)
参数
_First, 指定容器的起始位置
_Last ,指定容器的最后一个元素的下一个位置
_Func 用户自行定义的函数或者仿函数,_Func会作用于容器内的每个元素
返回值
返回_Func 的一个副本,一般该返回值都会被忽略
复杂度
线性
算法实现
template<class InputIterator, class Function>
Function for_each(InputIterator _First, InputIterator _Last, Function _Func)
{
while (_First != _Last)
{
_Func(*_First); //call _Func() for actual element
_First++;
}
return (_Func);
}
应用
#include "stdafx.h"
#include <string.h>
#include <algorithm>
#include <vector>
#include <deque>
#include <functional>
#include <iostream>
#include <list>
#include <sstream>
#include <iterator>
#include <functional>
#include <stdlib.h>
#define MAX_NUM 10
//#include "print.h"
using namespace std;
//function called for each element
void Print(int elem)
{
cout << elem << ' ';
}
int _tmain(int argc, _TCHAR* argv[])
{
vector<int> vecCollection;
for (int i = 0; i < MAX_NUM; ++i)
{
vecCollection.push_back(i);
}
//call Print() for each element
for_each(vecCollection.begin(), vecCollection.end(), Print);
cout << endl;
}
输出: