以前在学习Python、Swift、Java的时候经常会遇到lambda表达式,也称匿名函数、闭包,原来c++11种也支持lambda了。 看看c++ lambda函数原型。
//下面是个lambda例子: int a = 10; int b = 12; int c = 0; int z = [=,&c]() mutable throw()->int {a = 12; c = 15; return a + b + c;}(); std::cout< 'a=' << a << ' b=' << b << ' c='<< c << ' z=' << z << std::endl; 输出: a=10 b=12 c=15 z=39 下面这个例子,把lambda表达式传递给一个函数对象,当使用函数对象的时候就像用表达式。 #include int main() { int a = 10; int b = 12; int c = 0; std::function //auto fun = [=,&c]() mutable throw()->int{a = 12; c = 15; return a + b + c;}; int z = fun(); std::cout<< 'a=' << a << ' b=' << b << ' c='<< c << ' z=' << z << std::endl; return 0; } 输出: a=10 b=12 c=15 z=39 本文为头条号作者发布,不代表今日头条立场。 'a=' << a << ' b=' << b << ' c='<< c << ' z=' << z << std::endl;输出: a=10 b=12 c=15 z=39 下面这个例子,把lambda表达式传递给一个函数对象,当使用函数对象的时候就像用表达式。 #include int main() { int a = 10; int b = 12; int c = 0; std::function //auto fun = [=,&c]() mutable throw()->int{a = 12; c = 15; return a + b + c;}; int z = fun(); std::cout<< ' a=' << a << ' b=' << b << ' c='<< c << ' z=''> 'a=' << a << ' b=' << b << ' c='<< c << ' z=' << z << std::endl; 输出: a=10 b=12 c=15 z=39 下面这个例子,把lambda表达式传递给一个函数对象,当使用函数对象的时候就像用表达式。 #include int main() { int a = 10; int b = 12; int c = 0; std::function //auto fun = [=,&c]() mutable throw()->int{a = 12; c = 15; return a + b + c;}; int z = fun(); std::cout<< 'a=' << a << ' b=' << b << ' c='<< c << ' z=' << z << std::endl; return 0; } 输出: a=10 b=12 c=15 z=39 本文为头条号作者发布,不代表今日头条立场。 > |
|