成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

C++lambda表達式-創(chuàng)新互聯(lián)

C++11新標準引入lambda表達式,主要部分如下:

創(chuàng)新互聯(lián)公司一直在為企業(yè)提供服務,多年的磨煉,使我們在創(chuàng)意設計,全網(wǎng)整合營銷推廣到技術研發(fā)擁有了開發(fā)經(jīng)驗。我們擅長傾聽企業(yè)需求,挖掘用戶對產(chǎn)品需求服務價值,為企業(yè)制作有用的創(chuàng)意設計體驗。核心團隊擁有超過十多年以上行業(yè)經(jīng)驗,涵蓋創(chuàng)意,策化,開發(fā)等專業(yè)領域,公司涉及領域有基礎互聯(lián)網(wǎng)服務西云機房、app開發(fā)定制、手機移動建站、網(wǎng)頁設計、網(wǎng)絡整合營銷。

    [捕獲列表](參數(shù))->type{函數(shù)體},使用尾置返回類型,其中可以忽略參數(shù)與返回類型,但要保存捕獲列表與函數(shù)體,使用調用運算符調用,可在(參數(shù))后添加mutable限定符使值捕獲的數(shù)據(jù)可在函數(shù)體里修改。

    使用lambda表達式時,編譯器會產(chǎn)生未命名類的未命名對象,且有一個調用運算符成員函數(shù),實際使用時會調用該調用運算符成員函數(shù)。該未命名類不包含默認構造函數(shù)、賦值運算符、默認析構函數(shù),而是否包含默認的拷貝、移動構造函數(shù)與捕獲數(shù)據(jù)成員類型有關。

    [捕獲列表]

    表示外部捕獲的數(shù)據(jù),會將外部數(shù)據(jù)通過構造函數(shù)傳入未命名類里,可使用值傳遞與引用傳遞,值傳遞:auto Lambda = [intVal](){cout << intVal << endl;}; Lambda();,默認intVal為const類型,且該調用運算符是const成員函數(shù),不可修改intVal,如果需要修改則在(參數(shù))后添加限定符mutable:

auto Lambda = [intVal]()mutable{cout << ++intVal << endl;}; Lambda();,此時intVal可修改,且調用運算符成員函數(shù)是非const函數(shù)。值傳遞不會改變外部數(shù)據(jù)。

    引用傳遞:auto Lambda = [&intVal](){cout << ++intVal << endl;}; Lambda();,引用傳遞是否被修改取決于intVal是否為const類型,如果被修改則會同時修改外部數(shù)據(jù)。

    可使用隱式的值、引用傳遞,其捕獲的數(shù)據(jù)可通過編譯器在函數(shù)體的推導得出:auto Lambda = [=,&intVal](){cout << (data+intVal) << endl;}; Lambda();,其中data為隱式值傳遞;auto Lambda = [&](){cout << (data-intVal) << endl; func();}; Lambda();,其中data,intVal都是隱式引用傳遞,同時調用了func函數(shù)。如果使用隱式傳遞則要求=、&要在捕獲列表的首位置,同時之后的顯式捕獲不可為隱式捕獲的傳遞方式。

    注:如果是在類內使用并調用類內數(shù)據(jù),則可以使用[=]、[&]、[this]方式隱式或顯式捕獲this并使用類內成員,如果是類靜態(tài)成員可以直接使用而不用捕獲。

    (參數(shù))

接收外部參數(shù),與普通調用類似:auto Lambda = [](int val){cout << ++val << endl;}; Lambda(1);。匿名函數(shù)是可調用對象,可作為比較函數(shù)傳入:

// main.cpp
#include <iostream>
#include <algorithm>
using std::cout;
using std::ends;
using std::sort;
using std::string;
using std::begin;
using std::end;

int main()
{
    string arr[] = {"123","12345","1233","1233345"};
    sort(begin(arr),end(arr),[]
              (const string &s1,const string &s2)
              {
                  return s1.size() > s2.size(); // 按照字符串的大小逆序排序
              }
             );
    for (const auto &each : arr)
    {
        cout << each << ends;
    }
    return 0;
}

    ->type為尾置返回類型,可省略,如果有多個return且返回類型不一致,則需要指明返回類型:

// main.cpp
#include <iostream>
using std::cout;
using std::ends;

int main()
{
    auto Lambda = [](int choice)->char
    {
        if (choice == 0)
        {
            return 0x41; // 'A'
        }
        else
        {
            return '1';
        }
    };
    cout << Lambda(0) << ends;
    return 0;
}

    {函數(shù)體},這個應該很熟悉

    以上是對lambda表達式的介紹,如有錯誤望交流指正。

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

網(wǎng)頁標題:C++lambda表達式-創(chuàng)新互聯(lián)
標題鏈接:http://jinyejixie.com/article30/ggeso.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設、小程序開發(fā)、網(wǎng)站營銷響應式網(wǎng)站、面包屑導航微信公眾號

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設公司
天台县| 乐安县| 台安县| 都安| 昌宁县| 科尔| 武清区| 抚顺县| 依安县| 梓潼县| 江永县| 阆中市| 昌邑市| 明溪县| 诸暨市| 云林县| 老河口市| 老河口市| 神池县| 巧家县| 高平市| 保山市| 黄梅县| 健康| 潮州市| 阿图什市| 曲水县| 无为县| 安阳县| 乌鲁木齐县| 万盛区| 二手房| 白城市| 吉安县| 孟州市| 长沙县| 湛江市| 扶绥县| 丰原市| 德保县| 保靖县|