初入lambda運算式 (主要是c++11)

來源:互聯網
上載者:User

標籤:cap   statement   接下來   練手   mutable   cpp   預設   i++   傳遞   

寫一篇不貓的博文吧

   定義

   lambda運算式的定義如下

[capture](parameters) mutable ->return-type{statement}

   翻譯成人話就是

1.[capture]:捕捉列表。捕捉列表總是出現在Lambda函數的開始處。實際上,[]是Lambda引出符。編譯器根據該引出符判斷接下來的代碼是否是Lambda函數。捕捉列表能夠捕捉上下文中的變數以供Lambda函數使用;

2.(parameters):參數列表。與普通函數的參數列表一致。如果不需要參數傳遞,則可以連同括弧“()”一起省略;

3.mutable:mutable修飾符。預設情況下,Lambda函數總是一個const函數,mutable可以取消其常量性。在使用該修飾符時,參數列表不可省略(即使參數為空白);

4.->return-type:傳回型別。用追蹤傳回型別形式聲明函數的傳回型別。我們可以在不需要傳回值的時候也可以連同符號”->”一起省略。此外,在傳回型別明確的情況下,也可以省略該部分,讓編譯器對傳回型別進行推導;

5.{statement}:函數體。內容與普通函數一樣,不過除了可以使用參數之外,還可以使用所有捕獲的變數。

en,大概是這樣吧

 

讓我們寫幾個程式練練手~~~

 

1.簡單排序

#include <cstdio>#include <algorithm>int a[10]={0,1,2,3,4,5,6,7,8,9};int main(){std::sort(a,a+10,[](int x,int y){return x>y;});for(register int i=0;i<10;i++)printf("%d\n",a[i]);return 0;}

 

初入lambda運算式 (主要是c++11)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.