STL算法 ------- transform() 与 for_each()比较

来源:互联网 发布:arm-linux配置环境 编辑:程序博客网 时间:2024/05/16 08:15

1. for_each()     速度快        不灵活(只能对一个容器的某个区间进行操作)

2. transform()    速度慢      非常灵活(可以对多个容器的多个区间操作)

#include <iostream>#include <algorithm>#include <vector>using namespace std;void PrintVec( vector<int>& vec ){for(vector<int>::iterator itr= vec.begin(); itr!=vec.end(); ++itr){cout<<*itr<<' ';}cout<<endl;}//for_each//传引用 速度快void square( int& elem ){elem = elem * elem;}//trans_form//传入时进行一次拷贝  返回的时候一次拷贝int square2( int elem ){return elem*elem;}int main( int argc, char** argv ){vector<int> a;vector<int> b;for(int i=1; i<=9; ++i){a.push_back(i);b.push_back(i);}cout<<"vector a:"<<endl;PrintVec(a);for_each(a.begin(), a.end(), square);PrintVec(a);cout<<"vector b:"<<endl;PrintVec(b);//transform(b.begin(), b.end(), b.begin(), b.begin(), multiplies<int>());transform( b.begin(), b.end(), b.begin(), square2 );PrintVec(b);return 0;}



0 0
原创粉丝点击