Visual Studio 11开发指南(17)C++11更新- Lambda表达式

本文介绍了如何在Visual Studio 11中利用C++11的Lambda表达式,特别是在STL算法如for_each、parallel_for、parallel_for_each中的应用。Lambda表达式可以通过[]来捕获局部变量,并能隐式转换为函数指针,从而方便地与Win32 API如CreateThreadpoolWork和EnumWindows进行交互。示例展示了Lambda在提升代码质量和现代性方面的优势,鼓励开发者尝试使用VS11进行开发。
摘要由CSDN通过智能技术生成

Visual Studio 2010 年以来有可能在 c + + 代码中,和更具体地 STL 使用 Lambda 表达式 (匿名方法的窗体)。例如,看下面的代码执行,当使用这些类型的算法for_each、 parallel_for、 parallel_for_each等等的时候。

1.std::deque<int> d1;
2.    d1.push_back (2);
3.    d1.push_back (1);
4.    d1.push_back(3);
5.    d1.push_back(0);
6.    auto a=d1.begin ();
7.    auto b=d1.end ();
8.    std::sort(a,b);
9.    
10.    std::for_each (a,b,[](int i)
11.    {
12.            std::cout << i << std::endl;
13.    });


 

Lambda 这里开始用两个字符[]以指示我们捕获语法相对于没有本地变量[] 或 [=]或我们捕获所有的本地变量由引用或备份分别。做不捕获任何变量是 lambda 说是无限定的。

现在,这种类型的 lambda 隐式转换为函数指针,换句话说,成功调用旧的 Win32 API。
此处的示例与CreateThreadpoolWorkAPI,指向函数的指针参数 1,键入PTP_WORK_CALLBACK ,比原来的 lambda明显更好一些。

 

1.PTP_POOL pool=CreateThreadpool
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尹成

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值