Boost程序库探秘

所需积分/C币:18 2017-10-14 11:35:53 43.61MB PDF

boost程序库由c++标准委员会部分成员所设立的boost社区开发并维护,它功能强大、构造精巧、跨平台、开源并且完全免费,被称为“c++‘准’标准库”,已被广泛应用在实际软件开发中。   c++的最新标准(c++11)已经正式公布,而早在这之前,boost就已经使用库的形式实现了大部分新功能——而且是完全基于c++98标准实现的,内容涵盖智能指针、文本处理、并发、模板元等许多领域,其范围之广内涵之深甚至要超过c++11标准,极大地增强了c++的功能和表现力。   《Boost程序库探秘:深度解析C++准标准库》基于boostl.47版,深入探讨了其中的许多重要组件,包括迭代器、函数对象、
Boost 程序库探私 度解析心十*准标准库 ”…, 罗剑锋著 清华大学出版社 北京 内容简介 Boost程序库由C艹标准委员会部分成员所设立的 Boost社区开发并维护,它功能强大、构造精巧、跨 平台、开源并且完全免费,被称为“C++“准’标准库”,已被广泛应用在实际软件开发中 C++的最新标准(C++11)已经正式公布,而早在这之前, Boost就已经使用库的形式实现了大部分新 功能——而且是完全基于C++98标准实现的,内容涵盖智能指针、文本处理、并发、模板元等许多领域, 其范围之广内涵之深甚至要超过C++11标准,极大地增强了C++的功能和表现力 本书基于 Boostl47版,深入探讨了其中的许多重要组件,包括迭代器、函数对象、容器、流处理、序 列化以及C艹语言中最复杂最具威力的模板元编程,并专辟一章详细阐述 Boost的开发实例,具有较强的实 用性,可帮助读者更好更快地理解掌握 Boost的高级用法。 全书内容丰富、组织得当、概念清晰、讲解细致,是广大C++程序员和爱好者的必备好书。 本书封面贴有清华大学出版社防伪标签,无标签者不得销售。 版权所有,侵权必究。侵权举报电话:0106278298913701121933 图书在版编目(CP)数据 Boost程序库探秘—深度解析C++准标准库/罗剑锋著.一北京:清华大学出版社,2012.3 ISBN978-7-302-27485-8 ①B…Ⅱ.①罗…Ⅲ.①C语言一程序设计Ⅳ.①TP312 中国版本图书馆CIP数据核字(2011)第25580号 责任编辑:袁金敏 封面设计:柳晓春 责任校对:徐俊伟 责任印制:王秀菊 出版发行:清华大学出版社 poytiE:http://www,tup,comen,http://www.wgbook.com 地址:北京清华大学学研大厦A座 邮编:100084 杜总机:010-62770175 邮购 投稿与读者服务:010-62776969,cservIce@tup.tsinghua.edu.cn 质 RR:010-62772015,zhiliang@tuptsinghua.edu.cn 印装者:清华大学印刷厂 经销:全国新华书店 开本:185mmx235mm 印张:38.5 字数;937千字 版次:2012年3月第1版 印次:2012年3月第1次印刷 印数:1~4000 定价:79.00元 产品编号:044866-01 制画 缘起 2010年作者依据在实际开发中的经验编写了《 Boost程序库完全开发指南—深入c++ “准”标准库》(以下简称《指南》)一书,想为国内的C++程序员了解C++的最新技术进展尽 份自己的力量。图书付梓之后获得了许多的好评,同时也得到了很多有价值的批评意见 一无论读者如何评价该书,对作者而言都是鼓励。 由于《指南》成书时间较仓促, Boost程序库又太过庞大,许多原本预想的内容限于篇 幅不得不忍痛割爱予以移除,未能展现在读者面前,颇觉遗憾。于是时隔一年有余,作者将 《指南》书中部分移除的内容补充完善,又增加了对 Boost的新的研究心得,再次奉献给读 者,希望同《指南》一样能够给国内¢++程序员和爱好者带来一点帮助。 不比《指南》的一帆风顺,这次的写作过程异常艰辛,断断续续持续了一年半多,因为 工作紧张、项目实施出差等原因数次暂停(累计差不多有数月的时间),中途再度拾笔写作时 经常面临思路中断的烦恼。另一方面,书中的几个 Boost组件比较复杂,对其的研究也是颇 有难度,而把它表述成文字就更加困难,有时甚至有“荼壶煮饺子”的感觉。好在自己还算 是一个有毅力的人,零敲碎打、慢慢琢磨,把零碎的时间积累起来总算完成了这部作品,个 中甘苦一言难尽。 书名定为“探秘”,其意图在于不只是单纯地学习了解 Boost库的用法,而是要更深入 地探讨其内部的实现机制和原理,钻研其中的秘密所在。因此本书较之前作内容取舍和风格 上略微有了些变化,不再是那些简单易用的组件,而是更偏重于c++深层次概念、高级工具 编译期的泛型编程和模板元编程,学习难度较《指南》有所提升,请读者阅读时留意。 Boost程序库探秘——深度解析C++堆标准库 前言 拥抱C++11 本书完成之时C++最新标准已经公布,C++0x被正式定名为C++11,增加了许多新的 特性,例如nu11ptr、auto、 decltype、 attribute、 constexpr、 except、 static assert、 unique ptr、move语义、新式for循环、委托构造、增强的字符串 语法、标准线程库等等。这些新特性对语言的改变有小有大,但总的来说是让C++变得更友 好更容易使用了,新手和专家都可以从中找到自己喜欢的东西 虽然¢++11大大增强了C++的能力,但不可否认它同时也增加了语言的复杂度、学习 成本以及使用成本,而且目前编译器和开发工具的支持也还不完善,个人认为在短期内( 到两年)还无法在国内的生产环境中大范围普及。今后几年里C++11最可能的情况是与 C++98并存,C++群体逐渐了解熟悉新的语言特性和新的标准库,缓慢且平滑地由老标准过 渡到新标准,而在这个过程中 Boost无疑会扮演一个相当重要的角色。 作为C++的“准”标准库,这些年 Boost在C++开发中的地位已经变得越来越重要, 业已被广泛应用在实际产品中(用户包括 Adobe、Goog1e、 McAfee、SAP等大公司),众 多高质量的组件不仅极大地扩展了C++98在各个领域的能力,更为c++98添加了许多只有 在C++11中才有的新特性,让我们的开发工作更加轻松、编写的代码更加优雅。B∞。st也 积极地参与到了C++11标准的实现中,许多库和概念早已经被接纳为C++11的一部分,比 如bind、 function、 iterators、 random、 smart ptr、 unordered等,而其他的库 也都为C++11的到来做好了准备,可以立即应用到支持新标准的编译器。从这个意义上来讲, Boost是一个从C++98到C++1的最佳“引路人”,可以让我们以很低的成本无缝地过渡 到C++11。 C++和 Boost博大精深,虽然已经有十余年的实践经验,但作者仍有“高山仰止”之感。 由于篇幅和精力所限, Boost中还有几个重量级库未能探究,包括语法解析器 spirit、元 状态机msm、函数式编程 phoenix、预处理元编程 preprocess。r和预处理器wave,希 望今后的某个时候能够有机会把这些库结合最新的C+11标准展示给读者 致谢 首先仍然要感谢整个C++群体和 Boost社区,感谢他们长久以来的坚持和努力,让C++ 和 Boost变得越来越美好。 Boost程序库探秘——深度解析C++准标准库 前 ⅠII 其次我要感谢我的家人:我的父母、弟弟、妻子,感谢你们对我写作工作的支持,你们 永远是我生命中最重要的人;特别要感谢已经三岁的女儿,你是我生命中的小天使,愿你永 远快乐,这本书是送给你的礼物 最后感谢读者选择本书,还有那句“真心”的套话:限于作者水平有限,书中错漏在所 难免,敬请批评指正。 罗剑锋 20ll年11月2日于北京三里屯 Boost程序库探秘-一深度解析C++准标准库 目录 第0章导读 126元数据转换……… 21 1.2.7解析函数元数据 25 01关于本书……………………1 1.28实现原理……… 26 02读者对象… 129应用示例… 28 03本书的风格 1.3总结 04本书的开发环境 05本书的结构 第2章实用工具… 06如何阅读本书 21 compressed pair…… ……31 第1章模板元编程(Ⅰ) 21.1什么是空类 31 212类摘要 33 模板元编程概述 2.1.3构造与赋值 34 1.1.1元数据…… 8 214用法 …35 1.12元函数 2.1.5实现原理 36 1.13元函数转发…… 2.1.6功能扩展 ……37 1.14方便的工具… 2.2 checked delete…… 1.15应用示例……… 12 221函数的用法…… 41 1.2 type traits………………14 222函数对象的用法… 42 1.2.1概述………………14 223带检查的删除 1.2,2元数据类别(I) 224实现原理…… 45 15 225使用建议 1.2.3元数据类别(I) 47 17 2.3 addressof… 47 1.24元数据属性……… 231用法 47 12.5元数据之间的关系 232实现原理……… Boost程序库探秘—深度解析C++准标准库 目录 2.3.3使用建议…… 3.1.4标准迭代器工具… …83 24 value initialized………………50 3.15迭代器与算法 += 2.4.1变量的初始化… 50 3.2 next prior… …84 2. 4.2 initialized<t> 51 321函数声明 85 243用法…………………………52 3.22用法………………………85 2. 4.4 value initialized<t>*44*444+488+4:52 3.3 iterator traits 87 24.5更方便的用法 33.1标准迭代器特征类 2.5 base from member… 332类摘要……… 88 251类摘要 333用法 2.52用法……………… 55 3.4 iterator facade…… 89 253进一步的用法 57 341迭代器的核心操作 90 2.6 conversion……… 342类摘要…… 26.1标准转型操作符…………………59 343用法… …92 262多态对象的转型… 35 iterator adaptor…………96 263 polymorphic downcast…………61 3.51类摘要 96 264 polymorphic cast……………62 3.52用法 …98 2.6.5使用模板元编程实现转型……63 36迭代器工具 2.7 numerIc/ conversion…… 361共享容器迭代器… 2.8 pointer…………………67 3.62发生器迭代器…………………102 2, 8. 1 pointee 67 363逆向迭代器……………104 2.8.2 indirect reference..s...a. 69 364间接迭代器…… l05 2.8.3 pointer to other,..,nn 69 365计数迭代器……107 2.8.4 compare pointees".*++m#4+4.70 366函数输入迭代器 110 2.9 scope exit…………… 367函数输出迭代器…… 113 2.9.1用法………… 368过滤迭代器 115 292应用示例 369转换迭代器 118 2.9.3实现原理 74 36.10索引迭代器 119 294注意事项 …75 3.6.11组合迭代器…… 121 2.10总结……………………76 37总结…… 124 第3章迭代器 79第4章函数对象 ………127 3.1迭代器概述 ……………… 4.1hash……… …127 3.1.1迭代器模式 4.1.1类摘要 …28 3.12标准迭代器… 4.1.2用法 …129 3.13新式迭代器……………… 81 4.1.3实现原理… 130 Boost程序库探秘—深度解析C++准标准库 目录 VII 4.1.4扩展hash…,………131 55 ptr deque… 4.2 mem fn ……134 55,1类摘要… 4.2.1工作原理………34 552用法… 171 422用法…… 134 56ptr_list… 172 42.3其他议题………136 561类摘要……… ………172 4.3 factory…………… ……137 562用法………… ……173 43.1类摘要 5.7 ptr array …174 4,3,2用法………… 138 5.7.1类摘要……… …174 43.3 value factory………14l 572用法……175 434使用 typeof库…14l 58 ptr circular buffer………177 44 forward……… …142 581类摘要……………………………177 4.1类摘要……42 5.82用法… ……l78 44.2用法 143 59空指针处理………179 4.5总结………145 591禁用空指针… …………179 第5章指针容器… 592允许空指针 147 593使用空指针 181 5.1概述…………………………147 594空对象模式 511入门示例……………………148 510关联指针容器的共通能力……184 51.2指针容器的优缺点………151 5.10.1类摘要… 5.13可克隆概念 152 5.102接口解说 185 514克隆分配器 153 5.1集合指针容器适配器 186 515指针容器的分类 154 5.111配置元函数…… 186 52指针容器的共通能力 157 5.11.2 ptr set adapter 187 521模板参数…… …157 5.11.3 ptr multiset adapter 188 522构造与赋值………… …159 5.12 ptr set fll ptr multiset 523访问元素………60 5121类摘要 524其他能力……………162 5.122用法… 190 53序列指针容器适配器 163 5.13 ptr unordered set FA ptr 531配置元函数…… 163 ordered multiset……………191 532类摘要……164 513.1类摘要…… 191 533接口解说…………………166 5132用法… 534代码示例 166 514映射指针容器适配器 54 ptr vector… 167 514.1配置元函数………… 541类摘要 ,■ 168 5142 ptr map adapter…………195 542用法…………………169 5.14. ptr multimap adapter. 197 Boost程序库探秘—深度解析C++准标准库

...展开详情
img

关注 私信 TA的资源

上传资源赚积分,得勋章
最新资源