c++11之lambda

來源:互聯網
上載者:User

標籤:

  • 基本測試代碼
      1. /************************************************************************/
      2. /* 測試lambda */
      3. /************************************************************************/
      4. #include<iostream>
      5. #include<functional>
      6. class A
      7. {
      8. public:
      9. int i_ =0;
      10. void func(int x,int y)
      11. {
      12. auto ff =[this, x, y]{return i_ + x + y;};//捕獲了this,否則沒法使用類成員變數
      13. }
      14. };
      15. int main()
      16. {
      17. //[]內為要捕獲的外部變數
      18. auto f1 =[](int a)->int{return a;};//這是完整的寫法,帶參數列表,帶傳回值
      19. auto f2 =[](int a){return a +1;};//省略了傳回值類型,這個是顯而易見的
      20. auto f3 =[]{return2;};//沒有參數這可以省略不寫
      21. int a =0;
      22. auto f =[=]{return a;};//捕獲所有變數的值,沒法修改a,只是傳遞了值
      23. a++;
      24. std::cout << f()<< std::endl;
      25. //輸出為0
      26. int b =2;
      27. auto f4 =[&b]{return++b;};//捕獲了變數b的引用,對其修改
      28. std::cout << f4()<< std::endl;
      29. //配合bind
      30. std::function<int(int)> fr =[](int a){return a +9;};
      31. auto fr2 = std::bind(fr,4);
      32. auto fr3 = std::bind([](int a){return a;},555);
      33. std::cout << fr2()<< std::endl;
      34. std::cout << fr3()<< std::endl;
      35. }
       



來自為知筆記(Wiz)



c++11之lambda

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.