ما هو تعبير lambda في C++ ومتى يجب استخدامه؟
مرحبًا أيها الزملاء! بدأت دراسة C++11 وأواجه باستمرار مصطلح "تعبير lambda" (lambda expression). قرأت التوثيق، لكنني لم أفهم تمامًا ما هو، والأهم، لماذا هو مطلوب.
إليك مثال وجدته في أحد الدروس:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5};
int multiplier = 3;
// ماذا يحدث هنا؟
std::for_each(numbers.begin(), numbers.end(), [multiplier](int n) {
std::cout << n * multiplier << " ";
});
return 0;
}
أفهم أن `std::for_each` يطبق دالة على كل عنصر، لكن البناء `[multiplier](int n) { ... }` يربكني. لماذا لا يمكنني ببساطة كتابة دالة عادية أو functor؟ ما هي ميزة lambdas؟
أيضًا، لا أفهم ماذا تعني الأقواس المربعة `[]`. في بعض الأمثلة تكون فارغة، وفي أخرى تحتوي على متغيرات بداخلها. ومتى يجب استخدام لا توجد إجابات بعد.
تسجيل الدخول لترك إجابة