for_each算法

来源:互联网 发布:linux一键安装php 编辑:程序博客网 时间:2024/05/21 07:14

算法详解

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 elementvoid 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 elementfor_each(vecCollection.begin(), vecCollection.end(), Print);cout << endl;}

输出
1 0