码迷,mamicode.com
首页 > 编程语言 > 详细

泛型算法(二)之对序列的每个元素执行函数调用的算法

时间:2016-01-18 22:37:54      阅读:274      评论:0      收藏:0      [点我收藏+]

标签:

1、for_each(inIterBegin, inIterEnd, ufunc) :用函数对象ufunc调用序列中每一项元素

比如,输出序列的全部元素,可以这样写:

std::vector<int> c;
c.reserve(10);
//向c中添加元素
for (int i = 0; i < 10; i++)
{
    c.push_back(i);
}
//输出c中所有元素
std::for_each(c.begin(), c.end(), [](int element){
    std::cout<<element<<",";
});
//打印结果:0,1,2,3,4,5,6,7,8,9

2、transform(InputIterator first1, InputIterator last1, OutputIterator result, UnaryOperation op) :对序列中每一个元素,执行一元操作op,结果写入另一序列中

  比如,把c1中的元素全部乘以10后,放入c2中,可以这样写:

    std::vector<int> c1;
    std::vector<int> c2;
    c2.resize(10);        //!这个必须要有,具体参考《Effective STL》中的条款30:确保目标区间足够大
    //向c1中添加元素
    for (int i = 0; i < 10; i++)
    {
        c1.push_back(i);
    }
    //把c1中的每个元素乘以10后存入c2中
    std::transform(c1.begin(), c1.end(), c2.begin(), [](int element){
        return element * 10;
    });
    //输出c2中的元素
    for (auto var : c2)
    {
        std::cout << var << ",";
    }
  //打印结果:0,10,20,30,40,50,60,70,80,90

3、transform (InputIterator1 first1, InputIterator1 last1,InputIterator2 first2, OutputIterator result,BinaryOperation binary_op):对两个序列中对应的每一对元素,执行二元操作binary_op,结果写入另一序列中

比如,把上面的c1,c2中对应元素之和存入c3中,可以这样写:

std::vector<int> c1;
    std::vector<int> c2;
    std::vector<int> c3;
    c2.resize(10);        //!这个必须要有,具体参考《Effective STL》中的条款30:确保目标区间足够大
    c3.resize(10);
    //向c1中添加元素
    for (int i = 0; i < 10; i++)
    {
        c1.push_back(i);
    }
    //把c1中的每个元素乘以10后存入c2中
    std::transform(c1.begin(), c1.end(), c2.begin(), [](int element){
        return element * 10;
    });
    //把c1、c2中每个元素对应的和存入c3中
    std::transform(c1.begin(), c1.end(), c2.begin(), c3.begin(), [](int element1, int element2){
        return element1 + element2;
    });
    for (auto var : c3)
    {
        std::cout << var << ",";
    }
    //打印结果:0,11,22,33,44,55,66,77,88,99

 

泛型算法(二)之对序列的每个元素执行函数调用的算法

标签:

原文地址:http://www.cnblogs.com/dongerlei/p/5140077.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!