Lambda Expression ใน C++
C++ STL มีฟังก์ชัน generic ที่มีประโยชน์ เช่น std::for_each แต่ใช้งานยุ่งยากถ้า functor ที่ต้องการใช้เป็นของเฉพาะฟังก์ชันนั้นๆ วิธีแก้คือใช้ anonymous functions
C++11 นำเสนอ lambda expressions เพื่อสร้าง anonymous function ตัวอย่าง:
ตัวอย่าง
#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 จะถูกเรียก [] ใช้ส่งตัวแปรจาก scope ภายนอกเข้าไปใน lambda (capturing variables) lambda แบบง่ายสามารถ deduce type เองได้ สามารถระบุ type ให้ชัดเจนได้:
[](int x) -> double {
return x/2.0;
}