今天我在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表达式为我提供了什么,我目前还不能做到?
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/
| 归档时间: |
|
| 查看次数: |
868 次 |
| 最近记录: |