boost程序库探秘
boost库开发,C++第二标准库,功能强大,内容丰富。boost程序库探秘(度解析c准标准库罗剑锋著清华大学出版社北京内容简介Boost程序库由C艹标准委员会部分成员所设立的 Boost社区开发并维护,它功能强大、构造精巧、跨平台、开源并且完全免费,被称为“C++‘准’标准库”,已被广泛应用在实际软件开发中。C++的最新标准(C++11)已经正式公布,而早在这之前, Boost就已经使用库的形式实现了大部分新功能——而且是完全基于C++98标准实现的,内容涵盖智能指针、文本处理、并发、模板元等许多领域,其范围之广内涵之深甚至要超过C++11标准,极大地增强了C++的功能和表现力。本书基于 Boosts47版,深入探讨了其中的许多重要组件,包括迭代器、函数对象、容器、流处理、序列化以及C++语言中最复杂最具威力的模板元编程,并专辟一章详细阐述 Boost的开发实例,具有较强的实用性,可帮助读者更好更快地理解掌握 Boost的高级用法。全书内容丰富、组织得当、概念清晰、讲解细致,是广大C++程序员和爱好者的必备好书。本书封面贴有清华大学出版社防伪标签,无标签者不得销售。版权所有,侵权必究。侵权举报电话:010-6278298913701121933图书在版编目(CP)数据Boost程序库探秘深度解析C++准标准库/罗剑锋著.一北京:清华大学出版社,2012.3ISBN978-7-302-27485-8I.①B…Ⅱ.①罗…Ⅲ.①C语言一程序设计Ⅳ.①TP312中国版本图书馆CIP数据核字(2011)第25580号赉任编辑:袁金敏封面设计:柳晓春责任校对:徐俊伟责任印制:王秀菊出版发行:清华大学出版社pagtithttp://www,tup,comcn,http://www.wqbook.com地址:北京清华大学学研大厦A座邮编:100084杜总机:010-62770175邮购:010-62786544投稿与读者服务:010-62776969, service@tup. tsinghua.edu,cn质量反馈:010-62772015,zhiliang@tup.tsinghua,edu.cn印装者:清华大学印刷厂经销:全国新华书店开本:185mm×235mm张:38.5宇数;937千字版次:2012年3月第1版印次:2012年3月第1次印刷印数:1~4000定价:79.00元产品编号:044866-01前言缘起2010年作者依据在实际开发中的经验编写了《 Boost程序库完全开发指南深入c++准”标准库》(以下简称《指南》)一书,想为国内的C++程序员了解C++的最新技术进展尽一份自己的力量。图书付梓之后获得了许多的好评,同时也得到了很多有价值的批评意见一无论读者如何评价该书,对作者而言都是鼓励。由于《指南》成书时间较仓促, Boost程序库又太过庞大,许多原本预想的内容限于篇幅不得不忍痛割爱予以移除,未能展现在读者面前,颇觉遗憾。于是时隔一年有余,作者将《指南》书中部分移除的内容补充完善,又增加了对 Boost的新的研究心得,再次奉献给读者,希望同《指南》一样能够给国内C++程序员和爱好者带来一点帮助。不比《指南》的一帆风顺,这次的写作过程异常艰辛,断断续续持续了一年半多,因为工作紧张、项目实施出差等原因数次暂停(累计差不多有数月的时间),中途再度拾笔写作时经常面临思路中断的烦恼。另一方面,书中的几个 Boost组件比较复杂,对其的研究也是颇有难度,而把它表述成文字就更加困难,有时甚至有“茶壶煮饺子”的感觉。好在自己还算是一个有毅力的人,零敲碎打、慢慢琢磨,把零碎的时间积累起来总算完成了这部作品,个中甘苦一言难尽。书名定为“探秘”,其意图在于不只是单纯地学习了解B∞ost库的用法,而是要更深入地探讨其内部的实现机制和原理,钻研其中的秘密所在。因此本书较之前作内容取舍和风格上略微有了些变化,不再是那些简单易用的组件,而是更偏重于C++深层次概念、高级工具、编译期的泛型编程和模板元编程,学习难度较《指南》有所提升,请读者阅读时留意。Boost程序库探秘—一深度解析C++准标准库前言拥抱C++11本书完成之时C++最新标准已经公布,C+0x被正式定名为C++11,增加了许多新的特性,例如nu1lptr、auto、 decltype、 attribute、 constexpr、 except、static assert、 unique_ptr、move语义、新式for循环、委托构造、增强的字符串语法、标准线程库等等。这些新特性对语言的改变有小有大,但总的来说是让C++变得更友好更容易使用了,新手和专家都可以从中找到自己喜欢的东西。虽然C++11大大增强了C++的能力,但不可否认它同时也增加了语言的复杂度、学习成本以及使用成本,而且目前编译器和开发工具的支持也还不完善,个人认为在短期内(一到两年)还无法在国内的生产环境中大范围普及。今后几年里C++11最可能的情况是与C++98并存,C++群体逐渐了解熟悉新的语言特性和新的标准厍,缓慢且平滑地由老标准过渡到新标准,而在这个过程中 Boost无疑会扮演一个相当重要的角色。作为¢++的“准”标准库,这些年 Boost在C++开发中的地位已经变得越来越重要,业已被广泛应用在实际产品中(用户包括 Adobe、Goog1e、 McAfee、SAP等大公司),众多高质量的组件不仅极大地扩展了C++98在各个领域的能力,更为C++98添加了许多只有在¢++11中才有的新特性,让我们的开发工作更加轻松、编写的代码更加优雅。 Boost也积极地参与到了C++11标准的实现中,许多库和概念早已经被接纳为C++11的一部分,比如bind、 function、 iterators、 random、 smart ptr、 unordered等,而其他的库也都为C++11到来做好了准备,可以立即应用到支持新标准的编译器。从这个意义上来讲,Boost是一个从C++98到C++1的最佳“引路人”,可以让我们以很低的成本无缝地过渡到C++11。C++和 Boost博大精深,虽然已经有十余年的实践经验,但作者仍有“高山仰止”之感。由于篇幅和精力所限,B∞ost中还有几个重量级库未能探究,包括语法解析器 spirit、元状态机msm、函数式编程 phoenix、预处理元编程 prep。 cessor和预处理器wave,希望今后的某个时候能够有机会把这些库结合最新的C++11标准展示给读者。致谢首先仍然要感谢整个C++群体和 Boost社区,感谢他们长久以来的坚持和努力,让C++和 Boost变得越来越美好。Boost程序库探秘—深度解析C++准标准库前言其次我要感谢我的家人:我的父母、弟弟、妻子,感谢你们对我写作工作的支持,你们永远是我生命中最重要的人;特别要感谢已经三岁的女儿,你是我生命中的小天使,愿你永远快乐,这本书是送给你的礼物。最后感谢读者选择本书,还有那句“真心”的套话:限于作者水平有限,书中错漏在所难免,敬请批评指正罗剑锋2011年11月2日于北京三里屯Boost程序库探秘——深度解析C++准标准库目录第0章导读126元数据转换21,曹出世道虚日12.7解析函数元数据…2501关于本书1.28实现原理………………2602读者对象……………………21.29应用示例2803本书的风格13总结…2904本书的开发环境0.5本书的结构……第2章实用工具310.6如何阅读本书2.1 compressed pair31第1章模板元编程(Ⅰ)21.1什么是空类7212类摘要……………331.1模板元编程概述………2.1.3构造与赋值1.1.1元数据82.1.4用法351.12元函数……92.1.5实现原理………………………361.13元函数转发…………………………102.1.6功能扩展…371.14方便的工具2.2 checked delete…401.1.5应用示例……221函数的用法411.2 type traits……14222函数对象的用法…421.2.1概述2.23带检查的删除……441.2.2元数据类别(I)224实现原理451512.3元数据类别(I)225使用建议47172.3 addressof…1.24元数据属性……4723.1用法…125元数据之间的关系2023.2实现原理19Boost程序库探秘—深度解析C艹+准标准库ⅥI目录2.3.3使用建议…493.14标准迭代器工具………………8324 value initialized…………………503.1.5迭代器与算法…24.1变量的初始化…503.2 next prior……………842.4.2 initialized