版权所有 © 1999-2004 Jaakko Järvi, Gary Powell
使用、修改和分发受 Boost 软件许可协议 1.0 版的约束。(请参阅随附文件 LICENSE_1_0.txt
或在 https://boost.ac.cn/LICENSE_1_0.txt 复制)
Boost Lambda 库(以下简称 BLL)是一个 C++ 模板库,它为 C++ 实现了一种 lambda 抽象形式。该术语起源于函数式编程和 lambda 演算,其中 lambda 抽象定义了一个未命名的函数。BLL 的主要动机是为 STL 算法提供灵活便捷的方式来定义未命名的函数对象。在解释该库的用途时,一行代码胜过千言万语;以下代码行输出由空格分隔的某些 STL 容器 a
的元素
for_each(a.begin(), a.end(), std::cout << _1 << ' ');
表达式 std::cout << _1 << ' '
定义了一个一元函数对象。变量 _1
是此函数的参数,是实际参数的 占位符。在 for_each
的每次迭代中,都会使用 a
的元素作为实际参数来调用该函数。此实际参数将替换占位符,并评估该函数的“主体”。
BLL 的本质是让您直接在 STL 算法的调用站点上定义小的未命名函数对象,例如上面的那个。
[STL94] 标准模板库。 惠普实验室。 1994 年。 www.hpl.hp.com/techreports 。
[SGI02] SGI 标准模板库。 2002 年。 www.boost.org/sgi/stl/。
[Jär00] Lambda 库:C++ 中的 Lambda 抽象。 图尔库计算机科学中心。 技术报告。 378。 2000 年。 www.tucs.fi/publications。
[Jär01] Lambda 库:C++ 中的 Lambda 抽象。 第二届 C++ 模板编程研讨会。 坦帕湾,OOPSLA'01。 . 2001 年。 www.oonumerics.org/tmpw01/。
[tuple] Boost Tuple 库。 www.boost.org/libs/tuple/doc/tuple_users_guide.html 。 2002 年。
[type_traits] Boost type_traits。 www.boost.org/libs/type_traits/ 。 2002 年。
[ref] Boost ref。 www.boost.org/libs/bind/ref.html 。 2002 年。
[bind] Boost Bind 库。 www.boost.org/libs/bind/bind.html 。 2002 年。
[function] Boost Function 库。 www.boost.org/libs/function/ 。 2002 年。
[fc++] FC++ 库:C++ 中的函数式编程。 yanniss.github.io/fc++/ 。 2002 年。