C11新特性之Lambda表达式

这篇具有很好参考价值的文章主要介绍了C11新特性之Lambda表达式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.lambda语法

C11新特性之Lambda表达式

优点: 

1.可以定义简短的函数。

2.使用lambda表达式使代码更紧凑,可读性更好。

语法:

  • []表示不捕获任何变量
  • [this]表示值传递方式捕捉当前的this指针 
  • [&]表示引用传递方式捕捉所有父作用域的变量(包括this
  • [&var]表示引用传递捕捉变量var
  • [=]表示值传递方式捕获所有父作用域的变量(包括this

注意:捕捉列表不允许变量重复传递

二.lambda表达式工作原理

编译器会把一个Lambda表达式生成一个匿名类的匿名对象,并在类中重载函数调用运算符,实现了一个operator()方法.

auto print = []{cout << "Hello World!" << endl; };

编译器会把上面的代码翻译为下面的代码: 

class print_class
{
public:
	void operator()(void) const
	{
		cout << "Hello World!" << endl;
	}
};
// 用构造的类创建对象,print此时就是一个函数对象
auto print = print_class();

三.lambda使用场景

lambda用于std模板库,例如sort,for_each,find_)if,remove_if,多线程场景

lambda作为函数的入参:文章来源地址https://www.toymoban.com/news/detail-420928.html

using FuncCallback = std::function<void(void)>;

void DataCallback(FuncCallback callback)
{
	std::cout << "Start FuncCallback!" << std::endl;
	callback();
	std::cout << "End FuncCallback!" << std::endl;
}

auto callback_handler = [&](){
	std::cout << "This is callback_handler";
};

DataCallback(callback_handler);

到了这里,关于C11新特性之Lambda表达式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Lambda表达式:简介、语法和用法

    Lambda表达式是Java 8中引入的一个重要特性,它允许开发者以更加简洁的方式编写函数式代码。在本文中,我们将深入探讨Lambda表达式的概念、语法和用法,并为每个实例提供代码演示,同时对比与传统方法的区别和优势。 Lambda表达式是一种匿名函数,它主要用于表示简单的行

    2023年04月19日
    浏览(109)
  • Java 8 新特性之Lambda表达式

    函数式编程(Functional Programming)是把函数作为基本运算单元,函数可以作为变量,可以接收函数,还可以返回函数。历史上研究函数式编程的理论是Lambda演算,所以我们经常把支持函数式编程的编码风格称为Lambda表达式。 在Java中使用Lambda表达式的前提:需要是函数接口。

    2024年01月22日
    浏览(46)
  • Java 8 新特性——Lambda 表达式(2)

            Java Stream函数式编程接口最初在Java 8中引入,并且与 lambda 一起成为Java开发里程碑式的功能特性,它极大的方便了开放人员处理集合类数据的效率。         Java Stream就是一个数据流经的管道,并且在管道中对数据进行操作,然后流入下一个管道。有学过linux

    2024年02月11日
    浏览(39)
  • Java8新特性—Lambda表达式

    Java 8是Java编程语言的一个版本,于2014年发布。它引入了许多新的特性和改进。 Lambda表达式是Java 8中引入的一个重要的新特性,它提供了一种更加简洁、灵活的方式来编写函数式接口的实现,从而提高了代码的可读性和简洁性。 在本文中,我们将介绍Lambda表达式的基本语法、

    2024年02月03日
    浏览(42)
  • Java8新特性-Lambda表达式

    Lambda表达式 Lambda是一个匿名函数, 可以把lambda表达式理解为是一段可以传递的代码,(将代码像数据一样传递) 变化 需求: 求 薪资高于5000的员工信息 Lambda基本语法 在 java8 中引入了一个新的操作符 \\\"-\\\" , 箭头操作符, 箭头操作符 将Lambda表达式拆分为两部分: 左侧: Lambda表达式的参

    2024年02月01日
    浏览(38)
  • 【 C++11 】lambda表达式

    目录 1、lambda表达式的引入 2、lambda表达式         lambda表达式的语法         lambda表达式捕捉列表说明         使用lambda表达式排序自定义类型         lambda表达式的底层原理 1、lambda表达式的引入 在C++98中,如果想要对一个数据集合中的元素进行排序,可以

    2024年02月08日
    浏览(45)
  • C++ 11 Lambda表达式

    https://www.cnblogs.com/DswCnblog/p/5629165.html C++11的一大亮点就是引入了Lambda表达式。利用Lambda表达式,可以方便的定义和创建匿名函数。对于C++这门语言来说来说,“Lambda表达式”或“匿名函数”这些概念听起来好像很深奥,但很多高级语言在很早以前就已经提供了Lambda表达式的功

    2024年02月10日
    浏览(49)
  • C++11 lambda表达式

    lambda表达式是C++11或者更新版本的一个 语法糖 ,本身不是C++开发的。但是因其便利,很值得我们学习和使用。lambda有很多叫法,有lambda表达式、lambda函数、匿名函数,本文中为了方便表述统一用 lambda表达式 进行叙述。 在C++中,为了实现泛型编程,在一个类中,我们难免遇到

    2024年02月08日
    浏览(55)
  • C++11:lambda表达式

    lambda表达式实际上是一个匿名类的成员函数,该类由编译器为lambda创建,该函数被隐式地定义为内联。因此,调用lambda表达式相当于直接调用它的operator()函数,这个函数可以被编译器内联优化(建议)。 例如快速排序算法,STL允许用户自定义比较方式,在C++11之前,通常使用

    2024年02月14日
    浏览(29)
  • C++11_lambda表达式

    lambda表达式是C++11新引入的功能,它的用法与我们之前学过的C++语法有些不同。 [capture-list] (parameters) mutable - return-type { statement } [capture-list] : 捕捉列表,该列表总是出现在lambda函数的开始位置,编译器根据[]来 判断接下来的代码是否为lambda函数,捕捉列表能够捕捉上下文中的

    2024年02月02日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包