`

c++ lambda

c++ 
阅读更多
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
	vector<int> v1;
	v1.push_back(1);
	v1.push_back(-2);
	vector<int> v2;
	transform(v1.begin(),v1.end(),v1.begin(),[](int i)->int{return i>0?i:-i;});
	for each (auto var in v1)
	{
		cout << var << endl;
	}

	auto t = [](int i){return ++i;};
	int j = t(3);
	cout << j << endl;

	int k = 10;
	auto t1 = [k]()mutable{return ++k;};//如果不写mutable,会出error C3491: “k”: 不能在非可变 lambda 中修改按值捕获
	cout << t1() << endl;
}

1
2
4
11

c++的lambda看起来有点怪,可能是因为看过python的lambda,有了先入为主的原因.
从一方面讲,lambda只是对c++98/03中带有operator()的局部仿函数(函数对象)包装的"语法甜点".事实上,在c++11中lambda也被处理为匿名的仿函数.
分享到:
评论

相关推荐

    C++ Lambda Story - From C++98 to C++20.pdf

    **C++ Lambda表达式**是C++编程语言中一个强大的特性,从C++11标准开始引入,到C++20标准进一步增强。Lambda表达式允许程序员在代码中定义匿名函数,即没有名称的函数,这极大地提高了代码的灵活性和可读性。本书...

    C++ Lambda表达式详解

    C++ Lambda表达式详解 C++ Lambda表达式是C++语言的一个重要特性,引入于C++11标准中。它可以作为函数对象使用,可以用来替代一些繁琐的函数声明和定义。Lambda表达式的基本语法结构如下:[capture list] ...

    C++ Lambda Story

    《C++ Lambda Story》这本书深入探讨了C++中的Lambda表达式。它逐步引导读者了解这一强大的特性,并随着C++标准的每一次更新,逐渐揭示新功能和改进。让我们一起探索Lambda在不同C++版本中的发展历程: 在C++98/03...

    在Android JNI环境下使用C++ Lambda表达式等

    本apk包只是一个C++可用性的测试,主要展示以下内容: 1、使用std::function和std...2、使用C++11的Lambda表达式 3、在C++代码中回调Java对象的方法 详细描述请参考:http://blog.csdn.net/dyw/article/details/8099947

    在C++中使用Lambda函数提高性能(小文档)

    在C++中,Lambda函数是一种特殊的匿名函数,它使得开发者能够在代码中的任何地方快速定义小块的代码,并将其作为参数传递,或直接作为函数调用。Lambda函数通常被用于需要函数对象的场景,比如在STL算法中。这种函数...

    C++ Lambda表达式:灵活的函数式编程工具

    Lambda表达式是C++中一个非常有用的工具,它允许开发者以一种简洁而直观的方式编写匿名函数。它们在STL算法、泛型编程以及资源管理中尤其有用。通过合理使用lambda表达式,我们可以编写出更加简洁、高效和可读的代码...

    C++ lambda 捕获模式与右值引用的使用

    C++ lambda 捕获模式与右值引用的使用 C++ lambda 捕获模式是指在 lambda 表达式中捕获外部变量的方式,包括以值的方式捕获和以引用的方式捕获。以值的方式捕获是指在 lambda 表达式中复制一份外部变量的值,以便在...

    C++ Lambda表达式使用详解

    C++ 11 对LB的支持,对于喜欢Functional Programming的人来说,无疑是超好消息。它使得C++进入了和C#,JavaScript等现代流行的程序设计语言所代表的名人堂。  无名引用  对于一次性的,带参数表达式,用LB可以...

    C++-lambda闭包函数.pdf

    ### C++ Lambda闭包函数详解 #### 一、Lambda表达式简介 Lambda 表达式是C++11引入的一种新的语法特性,它允许我们创建简洁的匿名函数。Lambda 表达式通常用于需要短暂使用函数的地方,比如作为算法的比较函数等。...

    C++ 中的Lambda表达式写法

    在Bing上搜索 C++ lambda ,第一条记录就是MSDN上的C++ lambda的介绍。本文也是基于这篇文章来写的。 那么接下来,我们分几个部分来介绍。 一、什么是Lambda表达式 MSDN上对lambda表达式的解释: 在 C++ 11 中,...

    C++ 11 lambda 表达式

    C++ 11引入了lambda表达式,这是一个强大的特性,极大地增强了C++的函数式编程能力。Lambda表达式允许在程序中直接定义匿名函数,并且可以直接在需要的地方使用,无需预先声明。这对于处理回调函数、简化算法实现...

    C++ 中lambda表达式的编译器实现原理

    C++中的Lambda表达式是C++11引入的一项重要特性,它允许程序员在代码中定义匿名函数,并且可以直接在定义的地方使用。Lambda表达式的引入极大地增强了C++的可读性和简洁性,尤其是在处理函数对象和回调函数时。下面...

    基于C++ Lambda表达式的程序优化

    ### 什么是C++ Lambda表达式 C++ Lambda表达式是C++11标准引入的一个重要特性,它允许开发者在程序中直接定义匿名函数,即没有具体函数名的函数。在Objective-C和Swift等其他编程语言中,与之相似的特性分别是block...

    C++ 中的 Lambda 表达式

    ### C++ 中的 Lambda 表达式 #### 引言 C++11引入了许多重要的新特性,其中最显著的一项是Lambda表达式。这一特性极大地简化了代码编写过程,使得开发者能够更方便地创建匿名函数对象。Lambda表达式在很多场景下都...

    C++11 lambda表达式

    C++11中的lambda表达式是一种强大的特性,它允许程序员在代码中定义匿名函数,这些函数可以在需要的地方直接使用,而无需预先声明。这极大地方便了代码的编写,特别是对于那些只用一次的函数,同时也增加了代码的...

Global site tag (gtag.js) - Google Analytics