软件下载站,为您提供安全的软件下载!

当前位置:首页 > 电脑专区 > 应用软件 > 电子阅读 > c++模板元编程pdf清晰电子版

c++模板元编程pdf清晰电子版

分享到:
c++模板元编程是一本关于C++模板元编程的著作。作为一种高阶c++编程技术,模板元编程突出编译期决策在整个程序构建和运行过程中的地位,努力将计算从运行期提前至编译期,不但有效地防止程序错误被传播到运行期,而且能够实现以静态代码控制动态代码的目标。使计算尽可能完成于编译期也提高了最终程序的运行性能。小编分享的这本编译器C++模板元编程主要介绍Traits和类型操纵、深入探索元函数、整型外覆器和操作、序列与迭代器、算法、视图与迭代器适配器、诊断、跨越编译期和运行期边界、领域特定的嵌入式语言、DSEL设计演练,另外附录部分还介绍了预处理元编程概述、typename和template关键字等等。C++模板元编程通过理论联系实践,深入讲解了C++高级编程技术。想要了解更多欢迎免费下载。C++模板元编程适合中、高阶C++程序员等参考。
小编温馨提醒:这本书的内容比较多,要注意劳逸结合哦
c++模板元编程

作者介绍:

David Abrahams,Boost C++程序库开发组的一名发起成员和主持人。自从1996年起,Dave就是一名ANSI/ISO C++委员会成员,他因对C++标准程序库异常处理的理论、规格和实现的贡献而名声鹊起。他的公司Boost Consulting提供了与Boost有关的支持和开发服务,以及软件构建艺术的职业培训。
Aleksey Gurtovoy,MetaCommunications的一名技术领导,并且是Boost C++社区的功勋成员。他是Boost MetaprogramminaLIbrary最初的作者。自1993年起他就开始研究C++并使用它工作,AIeksey拥有俄罗斯克拉斯诺雅茨克州立技术大学计算机科学理学硕士学位。

精彩书评:

“如果你像我一样,对人们在模板元编程(Template Metaprogrammin9,TMP)方面所做的工作感到兴奋,但对缺乏这方面的清晰指导和强有力的工具感到沮丧。那好,这本书正是我们期待已久的。借助于优秀的Boost Metaprogramming Library,DaVid和Afeksey将TMP从实验室带到了生产一线,以易读的文字和实际的例子向我们展示了‘编译期STL’与其运行期对应物具有同样的能耐。本书既可以作教程,也可以用作专家手册。这是一本关于C++的扛鼎之作。”
——Chuck Allison.The C++Source编辑

目录:

译者序
序言
前言
致谢
第1章 概述
1.1 起步走
1.2 元程序的概念
1.3 在宿主语言中进行元编程
1.4 在C++中进行元编程
1.4.1 数值计算
1.4.2 类型计算
1.5 为何进行元编程
1.5.1 替代方案1:运行期计算
1.5.2 替代方案2:用户分析
1.5.3 为何进行C++元编程
1.6 何时进行元编程
1.7 为何需要元编程程序库
第2章 Traits和类型操纵
2.1 类型关联
2.1.1 采用一种直接的方式
2.1.2 采用一种迂回方式
2.1.3 寻找一个捷径
2.2 元函数
2.3 数值元函数
23.4 在编译期作出选择
2.4.1 进一步讨论iter_swap
2.4.2 美中不足
2.4.3 另一个美中不足
2.4.4 “美中不足”之外覆器
2.5 Boost Type Traits程序库概览
2.5.1 一般知识
2.5.2 主类型归类(Primary Type Categorization)
2.5.3 次类型归类(Secondary Type Categorization)
2.5.4 类型属性
2.5.5 类型之间的关系
2.5.6 类型转化
2.6 无参元函数
2.7 元函数的定义
2.8 历史
2.9 细节
2.9.1 特化
2.9.2 实例化
2.9.3 多态
2.10练习
第3章 深入探索元函数
3.1 量纲分析
3.1.1 量纲的表示
3.1.2 物理量的表示
3.1.3 实现加法和减法
3.1.4 实现乘法
3.1.5 实现除法
3.2 高阶元函数
3.3 处理占位符
3.3.1 lambda元函数
3.3.2 apply元函数
3.4 lambda的其他能力
3.4.1 偏元函数应用
3.4.2 元函数复合
3.5 Lambda的细节
3.5.1 占位符
3.5.2 占位符表达式的定义
3.5.3 Lambda和非元函数模板
3.5.4 “懒惰”的重要性
3.6 细节
3.7 练习
第4章 整型外覆器和操作
4.1 布尔外覆器和操作
4.1.1 类型选择
4.1.2 缓式类型选择
4.1.3 逻辑运算符
4.2 整数外覆器和运算
4.2.1 整型运算符
4.2.2 _c整型速记法
4.3 练习
第5章 序列与迭代器
5.1 Concepts
5.2 序列和算法
5.3 迭代器
5.4 迭代器Concepts
5.4.1 前向迭代器
5.4.2 双向迭代器
5.4.3 随机访问迭代器
5.5 序列Concepts
5.5.1 序列遍历Concepts
5.5.2 可扩展性
5.5.3 关联式序列
5.5.4 可扩展的关联式序列
5.6 序列相等性
5.7 固有的序列操作
5.8 序列类
5.8.1 list
5.8.2 vector
5.8.3 deque
5.8.4 range_c
5.8.5 map
5.8.6 set
5.8.7 iterator_range
5.9 整型序列外覆器
5.10 序列派生
5.11 编写你自己的序列
5.11.1 构建tiny序列
5.11.2 迭代器的表示
5.11.3 为tiny实现at.
5.11.4 完成tiny_iterator的实现
5.11.5 begin和end
5.11.6 加入扩充性
5.12 细节
5.13 练习
第6章 算法
6.1 算法、惯用法、复用和抽象
6.2 MPL的算法
6.3 插入器
6.4 基础序列算法
6.5 查询算法
6.6 序列构建算法
6.7 编写你自己的算法
6.8 细节
6.9 练习
第7章 视图与迭代器适配器
7.1 一些例子
7.1.1 对从序列元素计算出来的值进行比较
7.1.2 联合多个序列
7.1.3 避免不必要的计算
7.1.4 选择性的元素处理
7.2 视图Concept
7.3 迭代器适配器
7.4 编写你自己的视图
7.5 历史
7.6 练习
第8章 诊断
8.1 调试错误
8.1.1 实例化回溯
8.1.2 错误消息格式化怪癖
8.2 使用工具进行诊断分析
8.2.1 听取他者的意见
8.2.2 使用导航助手
8.2.3 清理场面
8.3 有目的的诊断消息生成
8.3.1 静态断言
8.3.2 MPL静态断言
8.3.3 类型打印
8.4 历史
8.5 细节
8.6 练习
第9章 跨越编译期和运行期边界
9.1 forl_each
9.1.1 类型打印
9.1.2 类型探访
9.2 实现选择
9.2.1 if语句
9.2.2 类模板特化
9.2.3 标签分派
9.3 对象生成器
9.4 结构选择
9.5 类复合
9.6 (成员)函数指针作为模板实参
9.7 类型擦除
9.7.1 一个例子
9.7.2 一般化
9.7.3 “手工”类型擦除
9.7.4 自动类型擦除
9.7.5 保持接口
9.8 奇特的递归模板模式
9.8.1 生成函数
9.8.2 管理重载决议
9.9 显式管理重载集
9.10 sizeof技巧
9.11 总结
9.12 练习
第10章 领域特定的嵌入式语言
10.1 一个小型语言
10.2 路漫漫其修远兮
10.2.1 Make工具语言
10.2.2 巴科斯一诺尔模式
10.2.3 YACC
10.2.4 DSL摘要
10.3 DSL
10.4 C++用作宿主语言
10.5 Blitz++和表达式模板
10.5.1 问题
10.5.2 表达式模板
10.5.3 更多的Blitz++魔法
10.6 通用DSEL

10.6.1 具名参数
10.6.2 构建匿名函数
10.7 BoostSpirit程序库
10.7.1 闭包
10.7.2 子规则
10.8 总结
10.9 练习
第11章 DSEL设计演练
11.1 有限状态机
11.1.1 领域抽象
11.1.2 符号
11.2 框架设计目标
11.3 框架接口基础
11.4 选择一个DSL
11.4.1 转换表
11.4.2 组装成一个整体
11.5 实现
11.6 分析
11.7 语言方向
11.8 练习
附录A 预处理元编程简介
附录B typename和template关键字
附录C 编译期性能
附录D MPL可移植性摘要
参考文献

精彩书摘:

......
第8章 诊断
因为c++元程序执行于编译期,所以给调试(debugging)工作带来了特别的挑战。没有调试器允许我们单步跟踪元程序的执行,设置断点,检视数据等等。这类调试工作需要对编译器内部状态的互动式探查。我们能做的全部事情,就是等待编译过程失败,然后破译编译器倾泻到屏幕上的错误信息。c++模板的诊断(diagnostics)是一种常见的让人感到挫折的源泉,因为它们通常与导致错误的原因没有明显的关系,并且呈现了大量的无用信息。在本章中,我们将讨论如何理解元编程程序员通常遭遇的错误种类,甚至如何使得这些诊断屈服于我们的“邪恶”的目的。
c++标准将错误报告的具体实现方式完全留给编译器实现者,因此我们将讨论几款不同的编译器的行为,通常是以批评的措辞。因为你的编译器的错误消息是你能得到的全部帮助,所以对工具的选择会对你调试元程序的能力产生巨大的影响。如果你在构建程序库,当出现错误时,你的客户对工具的选择将会影响他们对代码的理解,也会影响到你花在回答问题上的时间。因此,即使当我们在讨论你一般不使用的编译器时,我们也建议你聚精会神,因为你也许会发现你希望将它加入自己的工具箱,或者,希望为可能使用该款编译器的客户提供特别的支持。同样,如果我们看上去是在抨击你喜欢的工具,希望你不要感觉自己受到了冒犯。
8.1 调试错误
这一节的标题实际上取自另一本书【VJ02】,但用在这本书里也极为切题。实际上,模板错误报告通常如此像《战争与和平》,很多程序员忽略它们并且求助于随机的代码并改来改去,希望能碰巧改正确。在这一节中,我们将为你提供工具来剔除那些冗长的诊断信息,并且帮助你找到解决问题的正确途径。
.......

免责声明:

来源于网络,仅用于分享知识,学习和交流!请下载完在24小时内删除。
禁用于商业用途!如果您喜欢《c++模板元编程》,请购买正版,谢谢合作。
爱学习,请到3322软件站查找资源自行下载!

使用说明:

方法一:
1、下载并解压,得出pdf文件
2、如果打不开本文件,请务必在3322软件站选择一款阅读器下载
3、安装后,在打开解压得出的pdf文件
4、双击进行阅读
方法二:
1、在手机里下载3322软件站中的阅读器和百度网盘
2、直接将pdf传输到百度网盘
3、用阅读器打开即可阅读
展开更多

软件截图

扫描二维码,手机下载APP

软件下载站本地下载

相关文章