首页 > 其他分享 >Lambda表达式

Lambda表达式

时间:2023-08-08 21:22:11浏览次数:31  
标签:return int 捕获 43 v1 numbers 表达式 Lambda

为什么

  • 简洁

  • 可以实现函数对象局部定义

  • 能够捕获作用域中对象

  • 在算法中使用方便

是什么

内嵌的匿名函数 定义后自动生成一个匿名类

  • 语法

      [捕获列表](参数)mutable->int{return}
    
    • 中括号起手, [=] 捕获全部

    • 加上 mutable 可以改变捕获到的参数

    • 例:

      	// 算法中使用
      	std::vector<int> numbers = { 3, 1, 4, 1, 5, 9, 2, 6 };
      	sort(numbers.begin(),numbers.end(),[](int a, int b){
      		return a>b;
      	});
      	for(int i:numbers)
      		cout<<i<<" ";
      	cout<<endl;
      
      	// 引用, 是引用外部的
      	int a = 10;int b = 20;
      	auto lambda_add = [&a,&b](){
      		a++;
      		return a+b;
      	};
      	cout<<lambda_add()<<endl;
      	cout<<"a = "<<a<<endl;
      
      	// 不加引用就是改变生成的对象的值 mutable
      	int v1=42;
      	auto f=[v1] () mutable->int{return v1++; };
      	v1=0;
      	auto j=f(); //j 为 43
      	v1 = 100;
      	auto k=f(); //k 为 44
      	cout<<"j = "<<j<<endl<<"k = "<<k<<endl;
      
      • 输出

          ```
          9 6 5 4 3 2 1 1 
          31
          a = 11
          j = 42
          k = 43
          ```
        

标签:return,int,捕获,43,v1,numbers,表达式,Lambda
From: https://www.cnblogs.com/Long23/p/17615418.html

相关文章

  • python使用正则表达式
    Python使用正则表达式##py_regex.py#py_learn##CreatedbyZ.Steveon2023/8/717:18.##1.Python使用正则表达式,需要导入的模块re模块#2.正则表达式基本方法:#-match()#-search()#-findall()importredeftest_re():s="hellop......
  • 代码随想录算法训练营第十一天| 20. 有效的括号 1047. 删除字符串中的所有相邻重复项
    20.有效的括号    卡哥建议:讲完了栈实现队列,队列实现栈,接下来就是栈的经典应用了。 大家先自己思考一下 有哪些不匹配的场景,在看视频 我讲的都有哪些场景,落实到代码其实就容易很多了。   题目链接/文章讲解/视频讲解:https://programmercarl.com/0020.%E6%9C%8......
  • JDK8:Lambda表达式使用介绍,Lambda表达式源码及原理分析
    文章目录一、Lambda表达式使用1、Lambda表达式介绍2、Lambda使用规范(1)Lambda基础格式3、Lambda表达式与传统方式比对(1)遍历集合(2)使用Lambda替换匿名内部类使用(3)实现Lambda实现集合排序二、Lambda表达式底层原理解析1、反编译lambda2、静态私有函数生成过程(1)查看内部类的内容3、forE......
  • Pythonre.compile:用于优化正则表达式匹配的工具
    https://blog.csdn.net/www_xuhss_com/article/details/130858409?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EYuanLiJiHua%7EPosition-2-130858409-blog-86527810.235%5Ev38%5Epc_relevant_sort_base3&depth_1-utm_......
  • 【JavaScript11】正则表达式 RegExp对象
    定义正则表达式(英语:RegularExpression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。搜索模式可用于文本搜索和文本替换。创建RexExp对象有两种方式创建RexExp对象第一种:使用字面量创建RegExp对象的语法:第......
  • 正则表达式
    正则表达式常用于在给定的字符串中查询、提取、替换指定的特征值。元字符:元字符可以用于匹配一些特殊规则。1、元字符..可以匹配任意一个字符,但是不能用于匹配换行符。例:x.o,代表匹配“以x开头,之后是一个任意字符,紧跟着是字母o”的字符串。x.o这样的正则表达式,可以匹配xxo、......
  • 正则表达式
    你有一个思想,我有一个思想,我们交换后,一个人就有两个思想Anysufficientlyadvancedtechnologyisindistinguishablefrommagic.表达式释义字符描述\将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“n”匹配字符“n......
  • Cron表达式
    Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式:1、SecondsMinutesHoursDayofMonthMonthDayofWeekYear2、SecondsMinutesHoursDayofMonthMonthDayofWeek表1、cron表达式特殊字符意义表特殊字符意义*......
  • 正则表达式 随笔
    1.通配符\d数字\D反之\w数字字母下划线\W反之\s空格制表符\S反之\b匹配一个零宽单词边界,如一个字母与一个空格之间。s代表一个字符但b是定位符.任意单个字符2.自定义通配符[abcd]单个字符abcd[0-9a-z]单个字符0到9a到z[0-]单个字符......
  • Scala——文件和正则表达式
    读取文件importscala.io.Sourcevalsource=Source.fromFile(fileName,"UTF-8")//第一个参数可以是文件名或java.io.File//如果没有第二个参数将会使用当前平台缺省的字符编码vallineIterator=source.getLines//结果是一个迭代器//迭代器可以......