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