什么是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的优势是什么?
另外,我不明白方括号`[]`的含义。在一些例子中它们是空的,在另一些例子中则包含变量。以及何时应该使用它们?