您的位置:首页 > 其它

STL 之for_each,transform

2014-04-16 09:50 337 查看
返回

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: