Trang tài liệu
Khóa học C++ nền tảng
Chương 4. Hàm
Hàm Lambda trong C++

Hàm Lambda trong C++

Hàm lambda, hay đơn giản là “lambda”, là một hàm ẩn danh (chưa được đặt tên) được xác định tại chỗ, trong mã code nguồn của bạn và với một cú pháp ngắn gọn. Các hàm Lambda đã được giới thiệu trong C++11 và kể từ đó đã trở thành một tính năng được sử dụng rộng rãi, đặc biệt là khi kết hợp với các thuật toán Thư viện chuẩn.

Cú pháp

Đây là cú pháp cơ bản của hàm lambda trong C++:

[capture-list](parameters) -> return_type {
    // hàm body
};
  • danh sách lưu chữ trong bộ nhớ: Danh sách các biến từ phạm vi xung quanh mà hàm lambda có thể truy cập.
  • tham số: Danh sách các tham số đầu vào, giống như trong một hàm thông thường. Không bắt buộc.
  • return_type: Loại giá trị mà hàm lambda sẽ trả về. Phần này là tùy chọn và trình biên dịch có thể suy ra nó trong nhiều trường hợp.
  • hàm body: Mã code xác định hoạt động của hàm lambda.

Ví dụ sử dụng

Dưới đây là một số ví dụ minh họa việc sử dụng các hàm lambda trong C++:

  • Hàm lambda không có kiểu lưu thông tin và bộ lưu trữ, tham số hoặc kiểu trả về.
auto printHello = []() {
    std::cout << "Hello, World!" << std::endl;
};
printHello(); // đầu ra: Hello, World!
  • Hàm lambda có tham số.
auto add = [](int a, int b) {
    return a + b;
};
int result = add(3, 4); // kết quả = 7
  • Hàm lambda với tính năng nắm bắt theo giá trị.
int multiplier = 3;
auto times = [multiplier](int a) {
    return a * multiplier;
};
int result = times(5); // kết quả = 15
  • Hàm lambda với lưu chữ trong bộ nhớ theo tham chiếu.
int expiresInDays = 45;
auto updateDays = [&expiresInDays](int newDays) {
    expiresInDays = newDays;
};
updateDays(30); // ngày hết hạn = 30

Lưu ý rằng, khi sử dụng lưu chữ trong bộ nhớ theo tham chiếu, bất kỳ thay đổi nào được thực hiện đối với biến được chụp bên trong hàm lambda sẽ ảnh hưởng đến giá trị của nó trong phạm vi xung quanh.