[C++11] lambda函数

简介:

[capture](parameter) mutable ->return_type {statement}

[capture]:捕获列表,是lambda函数的引出符号,从上下文中捕捉变量以供函数使用。
  [var]:值传递捕捉变量var;
  [=]:值传递捕捉所有父作用域变量;
  [&var]:引用传递捕捉变量var;
  [&]:引用传递捕捉所有父作用域变量;
  [this]:值传递捕捉当前this指针。

(parameter):参数列表。如果不需要可连同括号一起省略。

mutable:mutable修饰符。默认情况下,lambda函数总是一个const函数,mutable可以取消其常量性质。使用该修饰符时,参数列表不可省略。

->return_type:返回类型。显示声明返回类型。不需要返回时可连同->一起省略。有返回值时也可以由编译器自行推导类型,隐式声明。

{statement}:函数体。可使用捕获列表中捕捉变量,也可以使用参数列表中参数。

实例:

  

时间: 2024-07-31 14:25:04

[C++11] lambda函数的相关文章

c++11 lambda(匿名函数)

#include <iostream> #include <functional> using namespace std::placeholders; //lambda即匿名函数 int main() { int a = 10; //当return所有的返回都是一个类型就不需要指定返回值的类型,因为编译器会自动推断 //也可以指定返回值类型形式:[]()->int{return 1}; //格式:[captures] (params) -> ret {Statment

C++11新特性:Lambda函数(匿名函数)

声明:本文参考了Alex Allain的文章http://www.cprogramming.com/c++11/c++11-lambda-closures.html 加入了自己的理解,不是简单的翻译 C++11终于知道要在语言中加入匿名函数了.匿名函数在很多时候可以为编码提供便利,这在下文会提到.很多语言中的匿名函数,如C++,都是用Lambda表达式实现的.Lambda表达式又称为lambda函数.我在下文中称之为Lambda函数. 为了明白Lambda函数的用处,请务必先搞明白C++中的自动

初窥c++11:lambda函数

为什么需要lambda函数 匿名函数是许多编程语言都支持的概念,有函数体,没有函数名.1958年,lisp首先采用匿名函数,匿名函数最常用的是作为回调函数的值.正因为有这样的需求,c++引入了lambda 函数,你可以在你的源码中内联一个lambda函数,这就使得创建快速的,一次性的函数变得简单了.例如,你可以把lambda函数可在参数中传递给std::sort函数 #include <algorithm> #include <cmath> void abssort(float*

【C++11】新特性——Lambda函数

本篇文章由:http://www.sollyu.com/c11-new-lambda-function/ 文章列表 本文章为系列文章 [C++11]新特性--auto的使用 http://www.sollyu.com/c11-new-features-auto/ [C++11]新特性--Lambda函数 http://www.sollyu.com/c11-new-lambda-function/ 说明 在标准 C++,特别是当使用 C++ 标准程序库算法函数诸如 sort 和 find,用户经常

C++11中的匿名函数 lambda函数 lambda表达式

这篇文章是根据维基百科整理来的,原文请看:http://en.wikipedia.org/wiki/Anonymous_function#C.2B.2B C++11提供了对匿名函数的支持,称为Lambda函数(也叫Lambda表达式). Lambda表达式具体形式如下: [capture](parameters)->return-type{body} 如果没有参数,空的圆括号()可以省略.返回值也可以省略,如果函数体只由一条return语句组成或返回类型为void的话.形如:   [captur

C++11 Lambda表达式简单解析

C++11 新增了很多特性,lambda 表达式是其中之一,如果你想了解的 C++11 完整特性, 建议去http://www.open-std.org/看看新标准! 很多语言都提供了 lambda 表达式,如 Python,Java 8 lambda 表达式可以方便地构造匿名函数,如果你的代码里面存在大量的小函数,而这些函数一般只被调用一次,那么不妨将他们重构成 lambda 表达式. C++11 的 lambda 表达式规范如下: [ capture ] ( params ) mutable

Python的lambda函数与排序

Python的lambda函数与排序 2010-03-02 15:02 2809人阅读 评论(0) 收藏 举报 lambdapythonlistlispclass工作 目录(?)[+] 前几天看到了一行求1000的阶乘的Python代码: print    reduce ( lambda    x , y : x * y ,    range ( 1 ,    1001 )) 一下子被python代码的精简 与紧凑所折服,故对代码进行了简单的分析. reduce与range都是Python的内置

lambda函数

C++11一个最激动人心的特性是支持创建lambda函数(有时称为闭包).这意味着什么?一个Lambda函数是一个可以内联写在你代码中的函数(通常也会传递给另外的函数,类似于仿函数或函数指针).使用Lambda,创建机动函数会更简单,而以前你必须创建一个有名函数.在这篇文章中,我先用一些例子解释为什么lambda很酷,然后我会讲解可能会用到的关于lambda的所有细节. 为什么Lambda很酷 想象你有一个地址簿类,并且你想要提供一个可供检索的函数.你可能会提供一个简单的函数,接受一个字符串然后

C++11 lambda 表达式解析

C++11 新增了很多特性,lambda 表达式是其中之一,如果你想了解的 C++11 完整特性,建议去这里,这里,这里,还有这里看看.本文作为 5 月的最后一篇博客,将介绍 C++11 的 lambda 表达式. 很多语言都提供了 lambda 表达式,如 Python,Java 8.lambda 表达式可以方便地构造匿名函数,如果你的代码里面存在大量的小函数,而这些函数一般只被调用一次,那么不妨将他们重构成 lambda 表达式. C++11 的 lambda 表达式规范如下: [ capt