for_each

  • for_each(iterator beg, iterator end, _func);
title:Important
最常用的遍历算法
#include <iostream>
#include <vector>
using namespace std;
 
class print03
{
public:
    void operator()(int val)
    {
        cout << val << " ";
    }
};
 
void print(vector<int>& v)
{
    for(vector<int>::iterator it = v.begin(); it != v.end(); it++)
    {
        cout << *it << " ";
    }
    cout << endl;
}
 
void print02(int val)
{
    cout << val << " ";
}
 
int main()
{
    vector<int>v1;
    
    for(int i = 0; i < 10; i++)
    {
        v1.push_back(i);
    }
    print(v1);
    
    for_each(v1.begin(), v1.end(), print02);
    cout << endl;
    for_each(v1.begin(), v1.end(), print03());
    cout << endl;
    
    return 0;
}
/*output:
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
 
*/

transform

  • transform(iterator beg1, iterator end1, iterator end2, _func);
#include <iostream>
#include <vector>
#include <algotrithm>
using namespace std;
 
class Transform
{
public:
    int operator()(int val)
    {
       return v;
    }
};
 
void print(vector<int>& v)
{
    for(vector<int>::iterator it = v.begin(); it != v.end(); it++)
    {
        cout << *it << " ";
    }
    cout << endl;
}
 
class print03
{
public:
    void operator()(int val)
    {
        cout << val << " ";
    }
};
 
int main()
{
    vector<int>v1;
    
    for(int i = 0; i < 10; i++)
    {
        v1.push_back(i);
    }
    print(v1);
    
    vector<int>v_target;
    v_target.reize(v1.size());
    transform(v1.begin(), v1.end(), v_target.begin(), Transform());
    for_each(v_target.begin(), v_target.end(), print03());
    return 0;
}
/*output:
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
 
*/