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-06-24

328 次檢視

開啟 你的職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.