当前位置:主页 > 计算机电子书 > 程序设计 > C++编程下载
C++模板元编程

C++模板元编程 PDF 超清版

  • 更新:2019-12-02
  • 大小:24.03 MB
  • 类别:C++编程
  • 作者:大卫、荣耀
  • 出版:机械工业出版社
  • 格式:PDF

  • 资源介绍
  • 相关推荐

本书清晰地揭示了现代C++*威力的使用手法,将实际的工具和技术交付普通程序员的手中。

元编程是产生或操纵程序码的程序。自从泛型编程被引入C++中以来,程序员们已经发现用于当程序被编译时对其进行操纵的无数“tricks template”,这些tricks有效地消除了横亘在程序和元编程之间的藩篱。尽管C++专家们对这种能力的兴奋已经波及整个C++社区,然而它们的实际应用对于大多数程序员来说仍然是遥不可及。本书解释了何谓元编程以及如何*化地使用

它,为你在自己的工作中有效地使用模板元编程提供了必备的基础。

本书瞄准于任何熟悉标准模板库(Standard Template Library,STL)惯用法的程序员。C++高级用户会获得对既有工作新的洞察以及对元编程领域新的认知。那些已经学习了一些高级模板技术的中级程序员将会明白这些tricks是从哪儿适合大画面的。并将获得有秩序地使用它们所需的概念基础。对于那些已经嗅到元编程味道但对其仍然感到神秘的程序员而言,最终将获得对元编程如何工作、何时工作以及为何工作的清晰的理解。无论如何,所有读者都将获得一个可以自由支配的、威力空前的新工具:Boost MetaDroaramming Library。
内容简介
《C++模板元编程》是关于C++模板元编程的著作。《C++模板元编程》主要介绍Traits和类型操纵、深入探索元函数、整型外覆器和操作、序列与迭代器、算法、视图与迭代器适配器、诊断、跨越编译期和运行期边界、领域特定的嵌入式语言、DSEL设计演练,另外附录部分还介绍了预处理元编程概述、typename和template关键字。《C++模板元编程》通过理论联系实践,深入讲解了C++高级编程技术。

《C++模板元编程》适合中、高阶C++程序员等参考。

附赠光盘内容包含所有Boost C++程序库:Boost Metaprog ramming Library及其参考文件,还包含所有随书代码示例以及大量的补充材料。

目录

  • 译者序
  • 序言
  • 前言
  • 致谢
  • 第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可移植性摘要
  • 参考文献

资源下载

资源下载地址1:https://pan.baidu.com/s/14BGZFsrA1lbqiSkVScYj2Q

相关资源

网友留言