for_each:对指定区间中的每个元素使用指定的函数进行访问及处理,所用的函数作为参数传递给该函数。
transform:元素传输
声明:
#include <algorithm>
template <class inputItr,class function>
function for_each(inputItr first,inputItr last,function func);
template <class inputItr, class outputItr, class unaryOperation>
outputItr transform(inputItr first,inputItr last, outputItr destFirst,unaryOperation op);
template <class inputItr1, class inputItr2, class outputItr, class binaryOperation>
outputItr transform(inputItr1 first1, inputItr1 last, inputItr2 first2, outputItr destFirst,binaryOperation bop);
示例代码:
#include <iostream>
#include <list>
#include <string>
#include <numeric>
#include <iterator>
#include <vector>
#include <functional>
#include <algorithm>
using namespace std;
void doubleNum(int& num) {
num = 2 * num;
cout << num << " ";
}
int main() {
char cList[5] = {'a','b','c','d','e'};
vector<char> charList(cList,cList+5);
ostream_iterator<char> sreen(cout, " ");
cout << "charList:" << endl;
copy(charList.begin(),charList.end(),sreen);
cout << endl;
//transform
transform(charList.begin(),charList.end(),charList.begin(),toupper);
cout << "charList:" << endl;
copy(charList.begin(),charList.end(),sreen);
cout << endl;
int list[7] = {2,8,5,1,7,11,3};
ostream_iterator<int> srceenInt(cout, " ");
cout << "list" << endl;
copy(list,list+7,srceenInt);
cout << endl;
// for_each
for_each(list,list + 7, doubleNum);
cout << endl;
cout << "list" << endl;
copy(list,list+7,srceenInt);
cout << endl;
return 0;
}
运行结果:
charList:
a b c d e
charList:
A B C D E
list
2 8 5 1 7 11 3
4 16 10 2 14 22 6
list
4 16 10 2 14 22 6