Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

Lambda Expression ใน C++


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;
}