加入lamda表达式支持后,C++有点类…
2014-01-15 12:23
309 查看
[转]C++11中的Lamda
[转载]http://coolshell.cn/articles/5265.html/comment-page-1 Lambda表达式来源于函数式编程,说白就了就是在使用的地方定义函数,有的语言叫“闭包”,如果 lambda
函数没有传回值(例如 void ),其回返类型可被完全忽略。
定义在与 lambda 函数相同作用域的变量参考也可以被使用。这种的变量集合一般被称作 closure(闭包)。
?
[capture](parameters)->return_type {body} |
1.capture
有传值和传引用2种方式
2.函数的调用参数列表
3.如果没有指定返回类型,则默认为void
所以,C++引入Lambda的最主要原因就是1)可以定义匿名函数,2)编译器会把其转成函数对象。相信你会和我一样,会疑问为什么以前STL中的ptr_fun()这个函数对象不能用?(ptr_fun()就是把一个自然函数转成函数对象的)。原因是,ptr_fun()
的局限是其接收的自然函数只能有1或2个参数。
那么,除了方便外,为什么一定要使用Lambda呢?它比传统的函数或是函数对象有什么好处
呢?我个人所理解的是,这种函数之所以叫“闭包”,就是因为其限制了别人的访问,更私有。也可以认为他是一次性的方法。Lambda表达式应该是简洁的,
极私有的,为了更易的代码和更方便的编程。
相关文章推荐
- C++ function、bind以及lamda表达式
- C++ function、bind以及lamda表达式
- 【转】C++ function、bind以及lamda表达式
- c++ lamda表达式的注意事项
- C++ function、bind以及lamda表达式
- c++ 11和java 8都支持lambda表达式
- C++ lamda表达式
- 安装CDT | eclipse 加入C/C++支持
- 代码简洁之道:C++ 11 之auto+ for_each + lamda表达式
- [导入]支持函数,变量的算术表达式计算(三、加入函数)
- 如何在Kdevelop中加入C++2011的支持
- 代码简洁之道:C++ 11 之auto+ for_each + lamda表达式
- C++ function、bind以及lamda表达式
- C++ function、bind以及lamda表达式
- C++、PHP、Javascript、...、对lambda表达式的支持
- 为了去重复,写了一个通用的比较容器类,可以用在需要比较的地方,且支持Lamda表达式
- 代码简洁之道:C++ 11 之auto+ for_each + lamda表达式
- [ASP.NET MVC]让Html.RenderAction支持Lamda表达式
- C++ function、bind以及lamda表达式
- C++ function、bind以及lamda表达式 http://blog.csdn.net/augusdi/article/details/11771699