zoukankan      html  css  js  c++  java
  • 泛型算法(一)之对序列的每个元素执行函数调用的算法

    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
  • 相关阅读:
    vue 基础
    Bootstrap 基础
    FormatMessage函数
    CreateProcess中的部分参数理解
    关于远程线程的调用
    利用服务枚举进程
    FindQQByProcess
    寻找kernel32.dll的地址
    ShellCode的几种调用方法
    操作系统版本
  • 原文地址:https://www.cnblogs.com/dongerlei/p/5140077.html
Copyright © 2011-2022 走看看