c ++ 11 lambda表达式

Lie*_*uwe 0 c++ lambda c++11

今天我在c ++ 11上做了一些追赶(因为我们还没有继续前进).像很多人所说的那样切换的原因之一似乎是lambda表达式.我仍然不确定他们如何提供新的东西.

例如使用c ++ 11:

#include <iostream>

int main()
{
    auto func = [] () { std::cout << "Hello world" << std::endl; };

    func();
}
Run Code Online (Sandbox Code Playgroud)

似乎非常相似:

#include <iostream>

#define FUNC( )\
        do { std::cout << "Hello world" << std::endl; } while(0)


int main()
{
    FUNC();
}
Run Code Online (Sandbox Code Playgroud)

lambda表达式为我提供了什么,我目前还不能做到?

Pin*_*ade 6

http://msdn.microsoft.com/en-us/library/vstudio/dd293608.aspx总结的要点和更多的非常详细的主题.这是一个重要的摘录:

lambda结合了函数指针和函数对象的优点,并避免了它们的缺点.像函数对象一样,lambda是灵活的并且可以维护状态,但与函数对象不同,它的紧凑语法不需要类定义.通过使用lambdas,您可以编写比同等函数对象的代码更简单且更不容易出错的代码.

网站上有一些例子显示了更多的差异和比较.

另外......传统观念永远不会在C++中使用宏:

http://scienceblogs.com/goodmath/2007/12/17/macros-why-theyre-evil/