首页>参考读物>计算机科学与技术>软件与程序设计

深入实践Boost:Boost程序库开发的94个秘笈
作者 : (俄)Antony Polukhin 著
译者 : 卢涛 译
丛书名 : C/C++技术丛书
出版日期 : 2014-04-21
ISBN : 978-7-111-46242-2
定价 : 59.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 261
开本 : 16
原书名 : Boost C++ Application Development Cookbook
原出版社: Packt Publishing Ltd.
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

图书特色

前勒口
资深技术专家多年工作经验结晶,Boost社区专家鼎力推荐。全书从数据类型、数据转换、资源管理、编译技巧、多线程、处理任务及字符串、元编程、容器等,全面而系统地讲解了Boost C++开发的各个方面,为编写健壮、高效的程序提供优秀指导。
本书内容丰富,既详细介绍Boost库的基础知识,又涵盖一些C++11方面的内容,并对现有的Boost库与C++11新标准进行了比较。而且作者结合自己多年实际开发经验,对于许多常见的Boost开发问题,给出了清晰、实用的攻略,可以有效帮助读者充分利用现成可用的解决方案解决实际问题。
本书适合初接触Boost的开发人员,以及希望提高自己Boost知识水平和技巧的开发人员阅读。

封面
资深技术专家多年工作经验结晶,Boost社区专家鼎力推荐
通过94个基于任务的实际应用开发案例,深入剖析Boost C++开发的各个方面,是编写健壮、高效程序的必备参考

封底
Boost库是由专业人员开发,在多个平台和处理器架构上测试,并适用于广泛任务的可靠解决方案。本书将带你踏上简化应用程序开发过程的旅程,引导你更快地编写完美的应用程序。
本书详细阐述多线程、网络编程、元编程和泛型编程,并探讨如何只编写一次程序,就能在Linux、Windows、Mac OS和Android操作系统中使用。书中汇集Boost库开发者创建的许多清晰、实用的秘笈,循序渐进地引导读者了解并充分利用Boost和C++的真正优势,以及一些现成可用的解决方案,快速开发高品质、可移植的应用程序。
本书主要内容:
涵盖日常使用的新数据类型、图形处理的基础知识,以及一些编程技巧。
讨论如何使用智能指针管理资源,根除内存泄漏问题,以及如何使用Boost库执行与多线程和常见的字符串相关的任务。
讲解如何将处理、计算和相互作用拆分为仿函数(任务)并且独立地完成这些任务。
探讨用于检测编译器、平台和Boost功能的各种辅助宏。
在C++03中使用精选的C++11特性。

后勒口
作者简介
Antony Polukhin?资深技术专家,拥有多年Boost软件开发经验。他在应用程序开发集成、程序包实现、面向图形的数据库查询和面向对象的软件开发等领域拥有独到的见解,积累颇丰,曾为Asterisc的商业替代软件开发业务逻辑。他开发或维护了许多Boost库,如Any、LexicalCast、TypeTraits、Variant等。目前他开发了一个面向图形的数据库查询引擎,并继续为开源做贡献。

图书前言

几年前,我的一位朋友一直在寻找关于Boost库的书。我问他:“你为什么不阅读官方文档呢?”他回答道:“我对它所知甚少,也不知道从哪里开始。Boost太庞大了,我没有时间来阅读全部有关它的官方文档。”嗯,这是一个很好的线索,但这样的一本书,将只会引起初学者的兴趣,专业人员会发现它没有什么意义,除非添加一些C++11的东西,并对现有的Boost库与C++新标准加以比较。
我也可以添加在Boost邮件列表中出现,但很难从文档中找到或未在文档中涵盖的常见问题的答案,辅之以性能说明,我们会得到几乎每个人都将感兴趣的一本书。
本书将向你展示一些清晰、实用的攻略,这将有助于你充分利用一些现成可用的解决方案。
本书从Boost库的基础开始讲解(现在它们大部分都是C++11的组成部分),并杜绝了任何内存泄漏的机会。管理资源将成为小菜一碟。我们将知道什么样的工作可以在编译时完成以及Boost容器可以做什么。你认为多线程编程是一种负担吗?用Boost就不会。你认为编写可移植的快速服务器是不可能的吗?你会感到惊讶!编译器和操作系统相差太大吗?用Boost不会。从处理图像到图形、目录、定时器、文件和字符串——人人都会发现一个有趣的话题。
你将学到开发高品质、快速、可移植应用程序所需的一切知识。只要编写一次程序,你就可以在Linux、Windows、Mac OS和Android操作系统中使用。
本书各章提要
第1章 开始编写应用程序 涵盖了日常使用的一些技巧。我们将看到如何从不同的来源得到配置选项,利用由Boost库作者介绍的一些数据类型可做出什么“菜”。
第2章 数据转换 解释如何将字符串、数值和用户定义的类型互相转换,如何安全地强制转换多态类型,以及如何在C++源文件中正确编写小型和大型解析器。
第3章 资源管理 提供使用指导,帮助你轻松管理资源,学会使用能够存储任何功能性的对象、函数和lambda表达式的数据类型。阅读该章后,你的代码会变得更加可靠并将根除内存泄漏问题。
第4章 编译时技巧 通过一些基本的Boost库的例子,引导你在编译时检查、调整算法,以及在其他元编程任务中使用它们。
第5章 多线程 讨论线程及相关的任何事情。
第6章 处理任务 讲解我们如何做到将处理、计算和相互作用拆分为仿函数(任务)并且如何让这些任务的每一步骤都几乎独立地完成。此外,我们没有必要阻塞某些慢的操作,例如从套接字(socket)接收数据或等待超时,而是提供一个回调的任务,并继续处理其他任务。
第7章 处理字符串 涵盖了更改、搜索和表示字符串的不同方面。我们将看到如何使用Boost库来轻松地完成一些与字符串相关的常见任务。
第8章 元编程 是专门为一些很酷的、很难理解的元编程方法而编写的。这些方法并不常用,但它们将真正有助于通用库的开发。
第9章 容器 涵盖Boost容器及直接与其相关的所有内容。该章提供了可以在日常编程中使用的Boost类的信息,这些类能使你的代码运行更快,并使开发新的应用程序更容易。
第10章 收集平台和编译器信息 提供不同的辅助宏用于检测编译器、平台和Boost功能。这些宏广泛应用于Boost库并且它们对于编写能够与任何编译器标志连用的可移植代码是必不可少的。
第11章 与系统打交道 更深入地探讨文件系统、创建和删除文件。我们会看到数据如何在不同的系统进程之间传递,如何以最快的速度读取文件,以及如何实现其他的技巧。
第12章 揭开冰山一角 本章主要针对某些大型库,为学习它们提供了基础知识。某些Boost库是小型的,适于日常使用,其他的Boost库则需要另外一整本书来描述其全部功能。
读这本书你所需要的东西
要运行这本书中的示例,将需要下面的软件:
C++编译器:任何现代的、流行的C++编译器都合适。
IDE:推荐QtCreator作为IDE。
Boost:你应该有一个完整的Boost 1.53版本的构建。
其他工具:Graphviz(任何版本)和libpng(最新版)。
请注意,如果你使用的是Linux,那么除了Boost以外,所需的软件都可以在存储库中找到。
本书适用对象
对于初接触Boost的开发人员,以及正在寻找途径以提高自己的Boost知识水平和寻求一些未在文档中说明的细节或技巧的开发人员来说,本书是很棒的。本书假设你已经具有一些C++经验,并且熟悉STL的基本知识。有几个章节将需要多线程和网络的一些预备知识。你至少要有一个好的C++编译器和Boost的编译版本(推荐1.53.0或更高版本),在本书的练习中将用到它们。
读者反馈
随时欢迎反馈意见,让我们知道你认为这本书怎么样——你喜欢什么或不喜欢什么。读者的反馈对于我们开发你真正有收获的主题是非常重要的。
如果给我们一般性的反馈,只需发送一封电子邮件到feedback@packtpub.com,并在邮件的主题中提及书名即可。
如果你擅长某一主题,并且你有兴趣写一本书或为一本书做出贡献,请参阅我们的作者指南,它位于www.packtpub.com/authors。
客户支持
现在,你是Packt的一本书的尊贵主人,我们有许多措施来帮助你从购买中获得最大利益。
下载示例代码
你可以从你在http://www.packtpub.com的账户下载在Packt 购买的所有书籍的示例代码文件。如果你在其他地方购买了这本书,可以访问http://www.packtpub.com/support并注册,以方便我们将文件通过电子邮件直接发送给你。
勘误表
尽管我们已经做了最大努力确保内容的准确性,但错误难免会发生。如果你在我们的某本书中找到一个错误,可能是错误的文字或代码,请将此情况报告给我们,我们将不胜感激。这样你可以帮助其他读者免于受挫,并且帮助我们改善这本书的后续版本。如果你找到任何错误,请通过访问http://www.packtpub.com/submit-errata,选择你的书,点击errata submission form(勘误提交表单)链接,输入勘误细节来报告错误。一旦你的勘误被核实,你的提交将被接受并且勘误表将上载到我们的网站,或添加到在书籍标题下任何现有的勘误列表中。任何现有的勘误表,可以从http://www.packtpub.com/support选择你的书名来查看。
问题
如果你对这本书有任何方面的问题,都可以通过questions@packtpub.com联系我们,我们将尽自己所能来解决。

上架指导

计算机\程序设计

封底文字

Boost库是由专业人员开发,在多个平台和处理器架构上测试,并适用于广泛任务的可靠解决方案。本书将带你进入简化应用程序开发过程的旅程,引导你更快地编写完美的应用程序。
本书详细阐述多线程、网络编程、元编程和泛型编程,并探讨如何只编写一次程序,就能在Linux、Windows、Mac OS和Android操作系统中使用。书中汇集Boost库开发者创建的许多清晰、实用的秘笈,循序渐进地引导读者了解并充分利用Boost和C++的真正优势,以及一些现成可用的解决方案,快速开发高品质、可移植的应用程序。

本书主要内容:
·涵盖日常使用的新数据类型、图形处理的基础知识,以及一些编程技巧。
·讨论如何使用智能指针管理资源,根除内存泄漏问题,以及如何使用Boost库执行多线程和常见的字符串相关的任务。
·讲解如何将处理、计算和相互作用拆分为仿函数(任务)并且独立地完成这些任务。
·探讨用于检测编译器、平台和Boost功能的各种辅助宏。
·在C++03中使用精选的C++11特性。

作者简介

(俄)Antony Polukhin 著:暂无简介

译者简介

卢涛 译:暂无简介

译者序

时光如梭,我第一次接触C++语言还是在1994年,当时对C++的理解就是一个带类的C,它支持类的派生和继承以及面向对象编程。2001年,我和一组经验丰富的程序员一起开发一个Windows图形界面的统计报表应用程序,这是我第一次在实际工作中用到C++。虽然那时C++98国际标准已经发布,但大多数编译器,包括我们使用的Visual C++ 6.0对它的支持并不好。C++11标准发布两年来,编译器厂商正在逐步实现这个标准新增的C++功能,而就在翻译本书之际,C++11标准的修订版C++14的工作草案已经发布,预计将于2014年成为正式标准。随着C++语言的迅猛发展,编译器落后于标准发展的情况将长期存在。
摆在我们面前的一个现实问题是,如果需要使用C++新标准中某些先进的功能,但编译器尚不支持,该如何处理?幸运的是,我们有Boost这个C++的“准”标准库。它包括了现有以及未来的标准库的大量功能,并且可以很方便地在不同的编译器上移植。事实上,许多Boost的成员本身就是ISO标准C++委员会的重要成员,每次C++标准的修订,都有原来属于Boost库的功能被增加到标准中,本书各章节也列举了大量这类案例。可以这么说,学习今天的Boost库,就是学习将来的C++标准,为了及早运用C++新功能,最好现在就在工作中使用Boost库。
Boost库博大精深,官方文档有数千页,程序员往往不知从何入手,迫切需要一本简明的使用手册来快速了解Boost库的主要功能。本书就是这样一本书,它精选了94个可以实际操作的例子,帮助读者利用Boost库解决下列问题:
获得配置选项;将字符串、数值和用户定义类型互相转换,以及在C++源文件中编写解析器;管理资源以及使用能够存储任何功能性的对象、函数和lambda表达式的数据类型;在编译时检查、调整算法,以及在其他元编程任务中使用它们;多线程编程;将处理、计算和相互作用拆分为独立完成的仿函数(任务);完成与字符串相关的常见任务;在通用库的开发中借助元编程方法;使用Boost容器;收集信息来检测编译器、平台和Boost功能;获得文件系统信息、创建和删除文件;处理图形和图像。
虽然本书不是面面俱到的Boost参考大全,但它能带你快速进入精彩的Boost世界。
感谢机械工业出版社编辑细致的审查和润色。感谢苏旭晖的帮助。
感谢妻子李颖的大力支持和儿子卢〇一的鼓励。你们是我工作的动力。
希望这本书对读者有帮助。由于译者经验和水平有限,译文中难免有不妥之处,恳请读者批评指正!

图书目录

译者序
前言
第1章 开始编写应用程序  1
秘笈1 获取配置选项  1
秘笈2 在容器/变量中存储任意值  5
秘笈3 在变量/容器中存储多个选择类型  7
秘笈4 使用更安全的方式处理存储多个选择类型的容器  8
秘笈5 返回一个值或在没有值的地方返回一个标志  12
秘笈6 从函数返回数组  14
秘笈7 将多个值结合成一个值  16
秘笈8 重新排列函数的参数  18
秘笈9 绑定一个值作为函数参数  21
秘笈10 使用C++11移动仿真  23
秘笈11 制作一个不可复制的类  26
秘笈12 制作一个不可复制但可移动的类  28
第2章 数据转换  32
秘笈13 将字符串转换为数值  32
秘笈14 将数值转换为字符串  34
秘笈15 将数值转换为数值  36
秘笈16 用户定义类型与字符串的相互转换  39
秘笈17 强制转换多态对象  41
秘笈18 解析简单的输入  43
秘笈19 解析输入  46
第3章 资源管理  51
秘笈20 管理作用域内的类指针  51
秘笈21 跨方法使用的类指针的引用计数  53
秘笈22 管理作用域内的数组指针  55
秘笈23 跨方法使用的数组指针的引用计数  56
秘笈24 在变量中存储任意函数化对象  59
秘笈25 在变量中传递函数指针  61
秘笈26 在变量中传递C++11中的lambda函数  62
秘笈27 指针的容器  63
秘笈28 在退出作用域时做一些事  66
秘笈29 用派生类的成员初始化基类  67
第4章 编译时技巧  71
秘笈30 在编译时检查大小  71
秘笈31 在整数类型中启用模板函数  75
秘笈32 在实数类型中禁用模板函数  77
秘笈33 从数值创建一个类型  80
秘笈34 实现类型特征  82
秘笈35 为模板参数选择最佳操作符  83
秘笈36 在C++03中获取一个表达式的类型  86
第5章 多线程  89
秘笈37 创建一个执行线程  89
秘笈38 对公共资源的同步访问  92
秘笈39 利用原子性快速访问公共资源  96
秘笈40 创建work_queue类  98
秘笈41 多读者单写者锁  102
秘笈42 创建对每个线程都是独占的变量  104
秘笈43 中断线程  106
秘笈44 操纵一组线程  108
第6章 处理任务  109
秘笈45 注册任务用于处理任意数据类型  109
秘笈46 制作定时器并把定时器事件作为任务处理  113
秘笈47 将网络通信作为一个任务  116
秘笈48 接受传入的连接  121
秘笈49 并行执行不同的任务  125
秘笈50 输送任务处理  127
秘笈51 制作一个非阻塞障碍  131
秘笈52 存储一个异常并用它制作任务  135
秘笈53 作为任务获取和处理系统信号  138
第7章 处理字符串  142
秘笈54 改变大小写及不区分大小写的比较  142
秘笈55 使用正则表达式匹配字符串  144
秘笈56 使用正则表达式查找和替换字符串  147
秘笈57 使用安全的类似printf的函数格式化字符串  150
秘笈58 替换和删除字符串  152
秘笈59 用两个迭代器表示字符串  153
秘笈60 使用string类型的引用  156
第8章 元编程  160
秘笈61 使用“类型向量”类型  160
秘笈62 操作类型向量  164
秘笈63 在编译时获取一个函数的结果类型  168
秘笈64 制作高阶元函数  170
秘笈65 懒惰地对元函数求值  172
秘笈66 将所有元组元素转换为字符串  175
秘笈67 拆分元组  178
第9章 容器  182
秘笈68 以超快速的方式比较字符串  182
秘笈69 使用无序集合和映射  186
秘笈70 制作值也是一个键的映射  189
秘笈71 使用多索引容器  192
秘笈72 从单链表和内存池获得好处  197
秘笈73 使用平面关联式容器  200
第10章 收集平台和编译器
信息  204
秘笈74 检测int128支持  204
秘笈75 检测RTTI支持  206
秘笈76 使用C++11外部模板加快编译速度  208
秘笈77 使用更简单的方法编写元函数  209
秘笈78 在C++11中减少代码量和提高用户定义类型的性能  211
秘笈79 导入和导出函数和类的可移植方式  213
秘笈80 检测Boost版本和最新的功能  215
第11章 与系统打交道  218
秘笈81 列出目录中的文件  218
秘笈82 创建及删除文件和目录  220
秘笈83 将数据从一个进程快速传递到另一个进程  222
秘笈84 同步进程间通信  225
秘笈85 在共享内存中使用指针  228
秘笈86 读取文件的最快方式  229
秘笈87 协程——保存状态并推迟执行  232
第12章 揭开冰山一角  235
秘笈88 使用图形  235
秘笈89 可视化图形  239
秘笈90 使用真随机数发生器  241
秘笈91 使用可移植的数学函数  243
秘笈92 编写测试用例  244
秘笈93 将多个测试用例结合到一个测试模块  246
秘笈94 处理图像  248

教学资源推荐
作者: (美)Richard Johnsonbaugh;Martin Kalin 著
作者: (美)Y.Daniel Liang 著 阿姆斯特朗亚特兰大州立大学
作者: 王瑞民 卢红星 主编 姬波 陈静 朱真峰 柳宏川 参编
作者: (美)Delores M. Etter; Jeanine A. Ingber 著