代码之家  ›  专栏  ›  技术社区  ›  Steve Townsend

STD::用C++ 0xλ表达式转换

  •  28
  • Steve Townsend  · 技术社区  · 15 年前

    这是如何在C++ 0x中完成的?

    std::vector<double> myv1;
    std::transform(myv1.begin(), myv1.end(), myv1.begin(),
                   std::bind1st(std::multiplies<double>(),3));
    

    最初的问题和解决方案是 here .

    6 回复  |  直到 9 年前
        1
  •  32
  •   Steve Townsend    12 年前
    std::transform(myv1.begin(), myv1.end(), myv1.begin(), 
       [](double d) -> double { return d * 3; });
    
        2
  •  28
  •   GManNickG    15 年前

    for_each(begin(myv1), end(myv1), [](double& a) { a *= 3; });
    

    for_each

        3
  •  28
  •   Steve Jessop    15 年前

    for(double &a : myv1) { a *= 3; }
    

    { a *= 3; } for

        4
  •  8
  •   Dario    15 年前

    for_each

    for_each(begin(myv1), end(myv1), [](double& a) { a *= 3; });
    


        5
  •  5
  •   John Dibling    13 年前

    vector<double> myv1;
    transform(myv1.begin(), myv1.end(), myv1.begin(), [](double v)
    {
        return v*3.0;
    });
    
        6
  •  1
  •   Elligno    9 年前

    using namespace std::placeholders;
    std::transform( myv1.begin(), myv1.end(), myv1.begin(),
                     std::bind( std::multiplies<double>(),3,_1));