C++11 中的 lambda 表示式是什麼?


C++ STL 包含 std::for_each 等有用的通用函式。很不幸,它們使用起來也相當麻煩,特別是當您想要應用的函式器對於特定函式而言是獨一無二的時候。因此,您要建立的函式將位於該名稱空間中,僅僅在該一個位置使用。其解決方案是使用匿名函式。

C++ 在 C++11 中引入了 lambda 表示式,以便允許建立匿名函式。

示例

#include<iostream>
#include<vector>
#include <algorithm> // for_each

using namespace std;

int main() {
   vector<int> myvector;
   myvector.push_back(1);
   myvector.push_back(2);
   myvector.push_back(3);

   for_each(myvector.begin(), myvector.end(), [](int x) {
      cout << x*x << endl;
   });
}

輸出

將生成以下輸出 −

1
4
9

(int x) 用於定義呼叫 lambda 表示式時將使用的引數。[] 用於傳遞變數,從區域性作用域到 lambda 的內部作用域,這稱為捕獲變數。這些表示式如果簡單,可以自動推斷其型別。您還可以使用以下語法顯式提供型別資訊 −

語法

[](int x) -> double {
   return x/2.0;
}

若要詳細瞭解 C++ lambda,請訪問 StackOverflow 主題 − https://stackoverflow.com/questions/7627098/what-is-a-lambda-expression-in-c11



更新日期: 2020 年 6 月 24 日

328 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.