STL_算法 for_each 和 transform 比较

来源:互联网 发布:邮箱验证正则表达式 js 编辑:程序博客网 时间:2024/05/20 04:47

C++ Primer 学习中。。。

 

简单记录下我的学习过程 (代码为主)



所有容器适用
/**----------------------------------------------------------------------------------
for_each                    速度快                 不灵活
transform                   速度慢                 非常灵活
----------------------------------------------------------------------------------**/
温故而知新:


         >>for_each<<篇


                            >>transform<< 篇



/**------http://blog.csdn.net/u010579068------**/#include<iostream>#include<cstdio>#include<string>#include<vector>#include<list>#include<deque>#include<iterator>#include<algorithm>using namespace std;/*****************************************//所有容器适用/**----------------------------------------------------------------------------------for_each                    速度快                 不灵活transform                   速度慢                 非常灵活----------------------------------------------------------------------------------**//*************************************************************************************for_each(b,e,p)transform(b1,e1,b2,op)transform(b1,e1,b2,b3,op)*************************************************************************************/void square(int& elem)//引用传递所以速度快{    elem*=elem;}int square2(int elem)//传参做一次拷贝,返回做一次拷贝{    return elem*elem;}template <typename T>void Print(const T& V){    typename T::const_iterator iter=V.begin();    while(iter != V.end())    {        cout<< *iter++ << " ";    }    cout<<endl;}int main(){    vector<int>a;    vector<int>b;    for(int i=1;i<=9;i++)    {        a.push_back(i);    }    b.insert(b.begin(),a.begin(),a.end());    cout<<"向量a:"<<endl;    Print(a);    for_each(a.begin(),a.end(),square);//参数的传递不需要返回值,引用传递即可    Print(a);    cout<<endl;    cout<<"向量b:"<<endl;    Print(b);    transform(b.begin(),b.end(),ostream_iterator<int>(cout," "),square2);//参数的传递不需要传引用,需要返回值    cout<<endl;return 0;}/*******Output:    向量a:    1 2 3 4 5 6 7 8 9    1 4 9 16 25 36 49 64 81    向量b:    1 2 3 4 5 6 7 8 9    1 4 9 16 25 36 49 64 81    *******/

0 0
原创粉丝点击