Boost C++ 库

...世界上最受尊敬和设计最精良的 C++ 库项目之一。 Herb SutterAndrei AlexandrescuC++ 编码标准

PrevUpHomeNext

第 18 章。Boost.Lambda

Jaakko Järvi

使用、修改和分发受 Boost 软件许可证 1.0 版的约束。(请参阅随附文件 LICENSE_1_0.txt 或在 https://boost.ac.cn/LICENSE_1_0.txt 处查看副本)

目录

简而言之
入门
安装库
本文档中使用的约定
简介
动机
Lambda 表达式简介
使用库
入门示例
Lambda 函子的参数和返回类型
关于 lambda 函子的实际参数
在 lambda 函数中存储绑定参数
Lambda 表达式详解
占位符
运算符表达式
Bind 表达式
覆盖推导出的返回类型
延迟常量和变量
用于控制结构的 Lambda 表达式
异常
构造和析构
特殊的 lambda 表达式
类型转换、sizeof 和 typeid
嵌套 STL 算法调用
扩展返回类型推导系统
实际考虑
性能
关于编译
可移植性
与其他 Boost 库的关系
Boost Function
Boost Bind
贡献者
某些设计决策的基本原理
Lambda 函子的元数
参考文献

简而言之

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] A. A. StepanovM. Lee. 标准模板库惠普实验室。1994。 www.hpl.hp.com/techreports

[SGI02] SGI 标准模板库2002。www.boost.org/sgi/stl/

[C++98] 国际标准,编程语言 – C++ISO/IEC:14882。1998。

[Jär99] 计算机科学讲义1977。斯普林格。2000。

[Jär00] Jaakko Järvi. Gary Powell. Lambda 库:C++ 中的 Lambda 抽象图尔库计算机科学中心。技术报告。378。2000。www.tucs.fi/publications

[Jär01] Jaakko Järvi. Gary Powell. Lambda 库:C++ 中的 Lambda 抽象第二届 C++ 模板编程研讨会。坦帕湾,OOPSLA'01。2001。www.oonumerics.org/tmpw01/

[Jär03] 软件 - 实践与经验33:259-291。2003。

[tuple] Boost 元组库www.boost.org/libs/tuple/doc/tuple_users_guide.html2002。

[type_traits] Boost type_traitswww.boost.org/libs/type_traits/2002。

[ref] Boost refwww.boost.org/libs/bind/ref.html2002。

[bind] Boost Bind 库www.boost.org/libs/bind/bind.html2002。

[function] Boost 函数库www.boost.org/libs/function/2002。

[fc++] FC++ 库:C++ 中的函数式编程Yannis Smaragdakis. Brian McNamara. yanniss.github.io/fc++/ 2002。


PrevUpHomeNext