Avatar ·

什么是C++中的lambda表达式,何时应该使用它?

大家好!我开始学习C++11,经常遇到“lambda表达式”这个术语。我读过文档,但不太明白它是什么,更重要的是,为什么需要它。 下面是我在一个教程中找到的例子:
#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?lambda的优势是什么? 另外,我不明白方括号`[]`的含义。在一些例子中它们是空的,在另一些例子中则包含变量。以及何时应该使用它们?