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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP