Computer >> Máy Tính >  >> Lập trình >> C ++

Biểu thức Lambda trong C ++

C ++ STL bao gồm các hàm chung hữu ích như std ::for_each. Thật không may, chúng cũng có thể khá cồng kềnh để sử dụng, đặc biệt nếu functor bạn muốn áp dụng là duy nhất cho một chức năng cụ thể. Vì vậy, hàm này mà bạn sẽ tạo sẽ nằm trong không gian tên đó chỉ được sử dụng tại một nơi đó. Giải pháp cho điều này là sử dụng các chức năng ẩn danh.

C ++ đã giới thiệu các biểu thức lambda trong C ++ 11 để cho phép tạo hàm ẩn danh. Ví dụ,

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) được sử dụng để xác định các đối số mà biểu thức lambda sẽ được gọi với. Dấu [] được sử dụng để chuyển các biến từ phạm vi cục bộ đến phạm vi bên trong của lambda, điều này được gọi là bắt các biến. Những biểu thức này nếu đơn giản, có thể tự động suy ra loại của chúng. Bạn cũng có thể cung cấp thông tin loại một cách rõ ràng bằng cú pháp sau

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