C++ 中的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;
}

更新於: 30-Jul-2019

452 次瀏覽

開啟您的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.