Nó định nghĩa một biểu thức Lambda, mà về cơ bản là một chức năng mà không có một cái tên. Nó có danh sách tham số (int x, const std::vector<int>&vect)
và phần thân hàm { ... }
. Nhưng nó cũng có một danh sách chụp ở đầu [&]
. Nếu bạn muốn truy cập một biến (không phải là một tham số) từ nội dung của biểu thức lambda, bạn phải làm cho biểu thức "lấy biến với chính nó", để biến có thể được sử dụng sau này khi biểu thức lambda sẽ Thực thi.
Bạn có thể cung cấp danh sách các biến hoặc sử dụng "tất cả" để nắm bắt tất cả các biến. [&]
có nghĩa là chụp tất cả chúng bằng cách tham chiếu và [=]
có nghĩa là chụp tất cả chúng theo giá trị.
(Nếu bạn sử dụng [&]
, lưu ý rằng phần thân lambda sẽ sử dụng giá trị của biến tại thời điểm lambda được thực thi và không phải là giá trị hợp lệ khi bạn tạo lambda! Điều này là do bạn không có một bản sao của giá trị, chỉ là một tham chiếu đến nó.)
Nguồn
2016-09-30 10:25:02
Đó là một danh sách chụp cho một lambda (cf http: //en.cppreference.com/w/cpp/language/lambda) –
Nó không phải là một hàm mà là một lambda. Bạn nên đọc lên trên những người – Hayt
Chỉ cần một người đứng lên, tôi đóng [this] (http://stackoverflow.com/questions/12262019/c-operator) như là một dupe của câu hỏi này. IMHO câu trả lời ở đây là chi tiết hơn. – NathanOliver