Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 2 của 2

Chủ đề: Lambda Expression

  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Lambda Expression

    Em có đoạn code như sau:

    Mã:
    #include <vector>
    #include <algorithm>
    #include <iostream>
    using namespace std;
     
    int main() 
    {
        vector<unsigned long> numbers;
        vector<unsigned long> indexes;
        int n;
        cin >> n;
        int *A  = new int [n];
        for (int i = 0; i < n; i++)
        {
            cin >> A[i];
            numbers.reserve(n);
            numbers.push_back(A[i]);
            indexes.reserve(numbers.capacity());
            indexes.push_back(i);
        }
     
        sort(indexes.begin(), indexes.end(),[&numbers](unsigned long i1, unsigned long i2){return numbers[i1] < numbers[i2];});
     
        for (auto i = indexes.begin(); i != indexes.end(); ++i)
        cout << *i << ' ';
        cout << endl;
     
        return 0;
    }
    Đoạn trên là em viết dựa trên tham khảo từ stackoverflow.

    Các bác cho hỏi trong dòng
    Mã:
    sort(indexes.begin(), indexes.end(),[&numbers](unsigned long i1, unsigned long i2){return numbers[i1] < numbers[i2];});
    cái biểu thức
    Mã:
    [&numbers](unsigned long i1, unsigned long i2){return numbers[i1] < numbers[i2])
    có ý nghĩa gì vậy ạ?
    Em đọc trên mạng thì thấy bảo là Lambda Expression nhưng chưa thực sự hiểu lắm ạ.

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Cái lambda này là bứng từ bên function-oriented đem qua [IMG]images/smilies/smile.png[/IMG]

    Thực ra con trỏ hàm rất dở nên thay bằng cái này nhìn nó sáng. Nhưng để sử dụng đc thì cần thêm khai báo auto, vì type thật của loại này ngán lắm nên để compiler tự tìm kiểu là tốt. Thực ra auto đi với C thì có vấn đề nhưng với C++ lại hay.
    Với lại bạn có thể viết hàm trong hàm với lambda expression [IMG]images/smilies/biggrin.png[/IMG]

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •