[C++11]lambda表达式语法
生活随笔
收集整理的這篇文章主要介紹了
[C++11]lambda表达式语法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
代碼如下:
#include <iostream> using namespace std;void func(int x, int y) {int a;int b;[=]() {int c = a;//使用了外部變量,[]里面加個 = int d = x;}; }int main() {return 0; }lambda表達式的注意事項:
以上圖片來自下面鏈接:
https://subingwen.cn/cpp/lambda/
代碼如下:
#include<iostream> using namespace std;void func(int x,int y) {int a = 7;int b = 9;[=, &x]()mutable //因為b是只讀的,我們無法修改它的值,所以加了mutable關鍵字,就可以修改了{int c = a;int d = x;b++;cout << "b = " << b << endl;}();cout << "b = " << b << endl; }int main() {func(1,2);return 0; }測試結果:
3.返回值
很多時候,lambda表達式的返回值是非常明顯的,因此在C++11中允許忽略lambda表達式的返回值。
代碼如下:
#include<iostream> using namespace std;auto f = [](int a)->int {return a + 10; };auto f1 = [](int a) {return a + 10; };int main() {cout << f(2) << endl;cout << f1(3) << endl;return 0; }測試結果:
代碼如下:
//OK,可以自動推導出返回值類型 auto f = [](int a) {return a ; };//error,不能推導出返回值類型 auto f1 = []() {return {1,2};//初始化列表作為函數返回值 };
以上圖片來自下面鏈接:
https://subingwen.cn/cpp/lambda/
代碼如下:
#include <iostream> #include <functional> using namespace std;void func(int x, int y) {int a;int b;using ptr = void(*)(int);ptr p1 = [](int x){cout << "x = " << x << endl;};p1(11);//error 捕獲了外部變量,所以不能看做函數指針/*ptr p2 = [=](int x){cout << "x = " << x << endl;}*/function<void(int)>fff = [=](int x){cout << "x = " << x << endl;};fff(1);//綁定function<void(int) > fff01 = bind([=](int x){cout << "x = " << x << endl;}, placeholders::_1);fff01(12);}int main() {func(12,143);return 0; }測試結果:
總結
以上是生活随笔為你收集整理的[C++11]lambda表达式语法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 报告|《Nature Medicine》
- 下一篇: [C++11]右值和右值引用