Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Biểu thức Lambda trong C++11 là gì?


C++ STL có các hàm generic hữu ích như std::for_each. Tuy nhiên, chúng khá rườm rà nếu functor bạn muốn áp dụng chỉ dùng cho một hàm cụ thể. Giải pháp là dùng hàm vô danh (anonymous functions).

C++11 giới thiệu biểu thức lambda để tạo hàm vô danh.

Ví dụ

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

Đầu ra

1
4
9

(int x) định nghĩa tham số lambda. [] dùng để capture biến từ phạm vi cục bộ vào bên trong lambda. Các lambda đơn giản có thể tự suy diễn kiểu. Có thể cung cấp kiểu tường minh:

Cú pháp đầy đủ

[](int x) -> double {
    return x / 2.0;
}

Tìm hiểu chi tiết lambda tại: https://stackoverflow.com/questions/7627098/what-is-a-lambda-expression-in-c11