给大家带来的一篇关于C++编程相关的电子书资源,介绍了关于C++、模板元、编程方面的内容,本书是由机械工业出版社出版,格式为PDF,资源大小24.03 MB,大卫 荣耀编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:9.2。

内容介绍

本书清晰地揭示了现代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可移植性摘要

参考文献

学习笔记

如何正确使用Nodejs 的 c++ module 链接到 OpenSSL

事情的起因是这样的, 因为某些原因, 最近在写 Nodejs 的 c++ module, 然后在js这边调用。 网络通信自然离不开ssl, 于是需要链接到Openssl的库。 我们本来的期望是,需要用户安装有Openssl的运行库, 然后我们的c++ module 动态链接到Openssl的so库上来运行。 起初一切看起来还不错,直到我们发现这个openssl的函数不能工作: PKCS7_sign() PKCS7_sign ( ) 我们发现: 如果我们的 c++ 模块与Openssl库动态链接的话, 编译都没问题. 但是运行会出现: PKCS7_sign 符号无法找到的错误. 如果我们的 c++ 模块与Openssl库静态链接的话, 编译也没问题, 但是运行时,调用这个函数的地方没有效果, 这个函数返回值是 0. 按照文档表示出现错误……

Linux下python与C++使用dlib实现人脸检测

python 与 C++ dlib人脸检测结果对比,供大家参考,具体内容如下 说明: 由于项目需求发现Linux下c++使用dlib进行人脸检测和python使用dlib检测,得到的结果出入比较大,于是写了测试用例,发现影响结果的原因有但不限于: 1.dlib版本不同(影响不大,几个像素的差别) 2.dlib 人脸检测中detector()第二个参数的设置测试结果如下: python PDlib.py: # -*- coding: utf-8 -*-import sysimport cv2 import dlibfrom skimage import iodetector = dlib.get_frontal_face_detector()win = dlib.image_window()for f in sys.argv[1:]: img = io.imread(f) dets = detector(img,1) #使用detector进行人脸检测 for i, d in enumerate(dets): x = d.left() y = d.top() w = d.right() h = d.bottom() cv2.rectangle(img, (x, y)……

解决安装mysqlclient的时候出现Microsoft Visual C++ 14.0 is required报错

在安装mysqlclient的时候出现了以下报错: 解决办法: 1.到提示网址:https://visualstudio.microsoft.com/download/里面下载对应VC++版本安装后继续安装mysqlclient。但是本人没有找到对应文件,故不再过多赘述,这里说下第二种方法。 2.1到https://www.lfd.uci.edu/~gohlke/pythonlibs/找到mysqlclient编译包下载对应版本: 注:前面代表python版本,后面的win代表Python位数。 2.2进入到文件放置的文件夹,比如我是将下载好的文件放在了c:\envs\django1-env并安装: 2.3提示安装成功,问题解决 总结 以上所述是小编给大家介绍的解决安装mysqlclient的时候出现Microsoft Visual C++ 14.0 is required报错,希望对大家有所帮助,如果大家有任何疑问请给我留……

Go语言对比 C++引用传参

这篇文章主要介绍了Go 到底有没有引用传参(对比 C++ ),需要的朋友可以参考下 C++ 中三种参数传递方式 值传递: 最常见的一种传参方式,函数的形参是实参的拷贝,函数中改变形参不会影响到函数外部的形参。一般是函数内部修改参数而又不希望影响到调用者的时候会采用值传递。 指针传递 形参是指向实参地址的一个指针,顾名思义,在函数中对形参指向的内容操作,实参本身会被修改。 引用传递 在 C++ 中,引用是变量的别名,实际上是同一个东西,在内存中也存在同一个地址。换句话说,不管在哪里对引用操作,都相当直接操作被引用的变量。 下面看 demo: #include iostream//值传递void func1(int a) { ……

以上就是本次介绍的C++编程电子书的全部相关内容,希望我们整理的资源能够帮助到大家,感谢大家对码农之家的支持。

展开 +

收起 -

python元编程的书_C++模板元编程 PDF 超清版相关推荐

  1. python基于c语言开发_C高级编程:基于模块化设计思想的C语言开发 PDF 超清版

    给大家带来的一篇关于C语言相关的电子书资源,介绍了关于C高级编程.模块化.设计思想.C语言开发方面的内容,本书是由机械工业出版社出版,格式为PDF,资源大小80 MB,吉星编写,目前豆瓣.亚马逊.当当 ...

  2. python自动化测试视频百度云-Python接口自动化测试 PDF 超清版

    给大家带来的一篇关于Python自动化相关的电子书资源,介绍了关于Python.接口自动化.测试方面的内容,本书是由电子工业出版社出版,格式为PDF,资源大小61.2 MB,王浩然编写,目前豆瓣.亚马 ...

  3. python魔力手册-小白入门宝典:Python快速入门魔力手册 PDF 超清版

    给大家带来的一篇关于Python编程相关的电子书资源,介绍了关于小白入门.python入门.Python手册方面的内容,本书是由魔力手册出版,格式为PDF,资源大小11.8 MB,魔力手册编写,目前豆 ...

  4. python嵌入式开发实战_嵌入式Qt实战教程 PDF 高清版

    给大家带来的一篇关于嵌入式相关的电子书资源,介绍了关于嵌入式.Qt实战方面的内容,本书是由电子工业出版社出版,格式为PDF,资源大小43.4 MB,陈志发,王苑增编写,目前豆瓣.亚马逊.当当.京东等电 ...

  5. 最新BAT大厂面试者整理的Android面试题目模板,分享PDF高清版

    前言 从毕业到现在面试也就那么几家公司,单前几次都比较顺利,在面到第三家时都给到了我offer!前面两次找工作,没考虑到以后需要什么,自己的对未来的规划是什么,只要有份工作,工资符合自己的要求就行!所 ...

  6. 207最新android书籍,《最强Android书 架构大剖析》PDF(高清版)

    目录 关于本书 XIV 第1 章 Android 体系结构的变革之路 1 1.1 Android 系统版本的历史变迁 2 Froyo(冻酸奶) 3 Gingerbread(姜饼人) 3 Honeyco ...

  7. json stm8s103 解析_STM8 C语言精品编程100例 PDF 超清版

    给大家带来的一篇关于C语言相关的电子文档资源,介绍了关于STM8.C语言方面的内容,本书是由STM8官网出版,格式为PDF,资源大小9.58 MB,赵荣轩编写,目前豆瓣.亚马逊.当当.京东等电子书综合 ...

  8. python基础教程pdf百度云-《Python基础教程(第3版)》PDF高清版

    <python基础教程第3版>PDF高清版  百度云资源,内涵教材源代码 百度云链接:百度云盘 提取码:7r7o 编辑推荐 久负盛名的Python入门经典,是非常优秀的基础教程,深入浅出, ...

  9. python基础教程-《Python基础教程(第3版)》PDF高清版

    <python基础教程第3版>PDF高清版  百度云资源,内涵教材源代码 百度云链接:百度云盘 提取码:7r7o 编辑推荐 久负盛名的Python入门经典,是非常优秀的基础教程,深入浅出, ...

  10. 疯狂python讲义视频 百度云-疯狂Python讲义 PDF高清版附源码

    内容简介 本书全面,深入地介绍了Python编程的相关内容,大致可分为四个部分.*系统部分介绍了Python的基本语法结构,函数编程,类和对象,模块和包,异常处理等: 第二部分主要介绍Python常用 ...

最新文章

  1. SQL Server数据库中Date/Time 时间格式的转换[转]
  2. CVPR 2019 | 实体零售场景下密集商品的精确探测
  3. mysql dump hbase_mysqldump导出全数据库
  4. P6329-[模板]点分树 | 震波
  5. 工作70:验证放在直接父级
  6. Mysql学习总结(19)——Mysql无法创建外键的原因
  7. 最近和一个35岁的朋友聊天,他最近在找工作
  8. 关于Windows系统中一些实用的修改常识
  9. iis php日志查看工具,教你如何查看IIS日志
  10. 【渝粤题库】陕西师范大学201831 课程论 作业
  11. 【Research Paper】
  12. 揭秘云网络大会“网红”:阿里云自研高性能网关XGW
  13. 【Proteus仿真】51单片机+直流电机正反转控制
  14. tp php websocket教程,tp6 websocket方法详解
  15. python中用于进行web开发的第三方库是_10款Web开发最佳的Python框架
  16. php站长统计,CNZZ站长统计产生的警告处理办法
  17. 1.居民身份证号码,由17位数字本体码,和1位数字校验码组成 2.判断用户输入的身份证号码是否合法 规则为:号码为18位,不能以0开头,前17位只可以是数字,最后一位可以是数字或‘X‘
  18. 目前最赚钱的5种计算机编程语言
  19. docker中mysql忘记密码怎么办?
  20. github如何上传代码到仓库(从本地上传代码到github)

热门文章

  1. 报告显示,2019秋冬高端游南北极、欧洲最受欢迎,海岛热度不减
  2. 什么是群发单显和分别发送,有什么区别,发客户邮件忘记群发单显
  3. ITIL事件管理流程关键知识
  4. python股票量化交易(10)---使用机器学习算法预测股票涨跌
  5. 声律启蒙(上 下卷,珍藏版)
  6. linux不能打开流的函数为,详解 4 种电脑提示“无法访问函数不正确”的解决方法...
  7. 10、JDBC(重点)
  8. Sql Server 2008服务启动失败,错误17058
  9. 如何利用Xshell远程登陆主机后使用代理服务器上网
  10. python打开网页后点击网页按钮_python单击网页上的按钮