常用的遍历算法

一、常用的遍历算法

1、for_each

2、transform

transform(b1,e1,b2,op)      //把一个区间[b1,e1)内的数据经过(op)转化,放入以b2开头的第二个容器内

                                          //也就是复制+修改(变换),当然b2可以等于b1

transform(b1,e1,b2,b3,op)   //把两个集合里的数据整合(op)到第三个集合,当然b3=b2=b1也可以

注意:

    1、如果目标与源相同,transform()就和for_each()一样;

    2、如果想以某值替换符合规则的元素,应使用replace()算法。

二、案例

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

//transform 将一个容器的元素 搬运到 另一个容器中
struct MyPlus
{
    int operator()(int val)
    {
        return val + 100;
    }
};
void MyPrint(int val)
{
    cout << val << " ";
}
void test01()
{
    vector<int> v1;
    vector<int> v2;

    for (int i = 0;i < 10;i++)
    {
        v1.push_back(i);
    }

    v2.resize(v1.size());//开辟空间

    transform(v1.begin(), v1.end(), v2.begin(), MyPlus());
    for_each(v2.begin(), v2.end(), MyPrint);//100 101 102 103 104 105 106 107 108 109
    cout << endl;
}

int main(void)
{
    test01();
    return 0;
}
原文地址:https://www.cnblogs.com/yuehouse/p/10120861.html