在 C++11 之前,您需要使用像 Boost.Lambda 这样的库来利用 lambda 函数。从 C++11 开始,这个库可以被视为已弃用,因为 lambda 函数现在是编程语言的一部分。如果您在不支持 C++11 的开发环境中工作,您应该在转向 Boost.Lambda 之前考虑 Boost.Phoenix。 Boost.Phoenix 是一个较新的库,如果您需要在没有 C++11 的情况下使用 lambda 函数,它可能是更好的选择。
lambda 函数的目的是使代码更紧凑且更易于理解(请参见示例 43.1)。
示例 43.1。带有 lambda 函数的 std::for_each()的
- #include <boost/lambda/lambda.hpp>
- #include <vector>
- #include <algorithm>
- #include <iostream>
-
- int main()
- {
- std::vector<int> v{1, 3, 2};
- std::for_each(v.begin(), v.end(),
- std::cout << boost::lambda::_1 << "\n");
- }

Boost.Lambda 提供了几个助手来创建无名函数。代码写在应该执行的地方,不需要包装在函数中,也不必显式调用函数。在示例 43.1 中,std::cout <&