c/c++语言开发共享Lambda表达式

有人可以解释我lambda表达式以及它们可以用于什么。 我用Google搜索并且有一个粗略的想法。 大多数例子都给出了c#代码。 普通老C中的lambda表达式怎么样?

    实际上有两个叫做“lambda表达式”的东西,它们相关性很小:

    C#:

     someCollection.Apply (x => 2*x); // apply expression to every object in collection // equivalent to someCollection.Apply (delegate (int x) { return 2 * X; }); 

    话虽如此,C不支持匿名方法。 但是,您可以使用函数指针来实现类似的结果:

     int multiply (int x) { return 2 * x; } ... collection_apply (some_collection, multiply); 

    el.pescado的答案是正确的,但他提供的示例使用函数指针可以轻松解决。 使用c函数指针无法解决lambda函数的许多用法。

    假设您在c中编写这些函数:

     int Multiply_1(int x) { return(x*1); } int Multiply_2(int x) { return(x*2); } int Multiply_3(int x) { return(x*3); } int Multiply_4(int x) { return(x*4); } etcetera, to infinity 

    这些都很容易理解。 现在假设您要编写一个函数,该函数将y作为输入并返回指向函数Multiply_y()的指针:

     (int)(int) *Make_Multiplier(int y) { return(Multiply_y); } 

    其中“Multiply_y”是动态创建的Multiply_1,Multiply_2等forms的函数。具有一等lambda函数的语言可以做到这一点。

    C不支持lamba表达式…如果你知道perl,我强烈推荐“高阶perl”这本书,它将为你提供熟悉的(如果你知道的perl)和实用的各种函数式编程技术的精彩介绍。设置。

    在MSDN上查看

    需要了解更多c/c++开发分享Lambda表达式,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享Lambda表达式相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/979341.html

      (0)
      上一篇 2021年12月12日
      下一篇 2021年12月12日

      精彩推荐