Avatar ·

ما هو تعبير 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؟ أيضًا، لا أفهم ماذا تعني الأقواس المربعة `[]`. في بعض الأمثلة تكون فارغة، وفي أخرى تحتوي على متغيرات بداخلها. ومتى يجب استخدام