【内容简介】
本书以STLSoft为基础,广泛深入地论述了C++标准库STL的相关内容。全书共三部分43章,包括标准模板库、扩展STL、元素引用类别、DRY SPOT原则、抽象泄漏法则、契约式编程、约束、垫片、不完备结构一致性的发端、资源获取、模板工具、推断式接口适配、Henney假说、适配、遍历进程和模块、环境变量、字符串分词、聚集分散的I/O以及迭代器等内容。.
全书通过严谨的表述与丰富的示例,将概念和理论与实际的设计和代码结合起来,从而使读者既能深刻地理解STL的知识,又能熟练地掌握STL运用方法。
著名的C++专家Matthew Wilson在本书中展示了如何超越C++标准并扩展标准模板库(Standard Template Library,STL),进入包含API和非标准集合的更广阔的C++世界,以编写更有效、更有表达力、更灵活、更健壮的软件。
在本书中,Wilson使用自己创新的技术帮助读者掌握STL扩展特性,这体现在两个方面:将专用技术库和操作系统API适配为STL兼容的集合,并定义精密的迭代适配器,使STL潜在的效率和表现力得以实现。Wilson用实际的例子阐明了几个强大的概念和技巧,让你在连STL的创造者都未曾预见的方向上扩展STL,其中包括集合、元素参考类别、外部迭代器失效和推断式接口适配。
对于那些对STL知之甚微的C++程序员,本书将是宝贵的资源。它帮助你:
●学习STL扩展中特有的原则和技巧。
●通过查看STL扩展的内部实现,进一步学习STL。..
●学习实现封装的通用技术,在操作系统API和专用技术库之上实现封装。
●学习如何编写迭代器适配器,并理解其实现和使用上的限制及其背后的原理。
本书主要内容包括
●编写大部分集合,并理解它们与容器的不同之处。
●掌握元素引用类别:定义它们,检测它们,并利用它们设计STL扩展集合和迭代器。
●处理外部迭代器失效,并理解它对STL兼容集合的设计产生的惊人影响。
●适配实际的API,包括从文件系统遍历到分散或聚集I/O。
●使用独立迭代器类型,从简单的std::ostream_iterator扩展到复杂的过滤和转换类型或值的适配器。...
【作译者介绍】
本书提供作译者介绍
Matthew Wilson,Synesis软件公司的软件开发顾问,STLSoft和Pantheios库的创建者,《Imperfect C++》(Addison-Wesley)的作者。他曾是《C/C++ Users Journal》(C/C++用户杂志)的专栏作家,也是一些主要出版物的撰稿者,具有15年以上的C++经验。他拥有英国曼彻斯特大学博士学位,目前定居在澳大利亚。
.. << 查看详细
【目录信息】
译者序.
前言
致谢
序言
编排体例
第一部分基础
第1章标准模板库
1.1核心概念
1.2容器
1.2.1序列容器
1.2.2关联容器
1.2.3存储空间的连续性
1.2.4交换
1.3迭代器
1.3.1输入迭代器
1.3.2输出迭代器
1.3.3前向迭代器
1.3.4双向迭代器
<< 查看详细目录
【译者序】
自从1998年9月C++标准定案以来,STL就作为标准库的重要组成部分,为广大程序员所熟知,也确实带来了巨大的便利。但作为一种兼顾系统编程和应用编程的语言,C++绝不可能局限于STL的象牙塔之中。只要面对的任务稍具现实性,我们就不可避免地要和所谓“遗产”API(应用程序接口)打交道。.
这些编程接口在过去若干年中积累而来,固然堪称宝贵财富,但有时候也会成为C++编程的沉重负担。
使用方式让人隐约感到暗合STL的概念,“集合”、“迭代”、“迭代器”的影子似乎触手可及,甚至就是另一种容器实现,但由于缺少所需的编译时接口,无法直接搭配STL算法和适配器。
经常采取显式资源管理,其传统的“分配—使用..
<< 查看译者序
【前言】
我的伯父John,是那种我父母一代所谓的男子汉。他强壮、粗犷、有点吓人,很有牛仔气概,而且他有勇气承认自己害怕,不像我只愿意述说自己的小失败。所以,当他说第二次跳伞的挑战是克服已知的恐惧,我记住了。我现在已经写了两本书,可以毫无疑问地证实这种相同的恐惧。开始第二次时,你知道有多少痛苦即将来临,这不是件能轻易做到的事。那么问题是,为什么我还这样做呢?.
其原因将在序言中阐述,总的来说,我试图对以下看似简单的两面性做出回应:
C++太复杂了。
C++是惟一足够强大,能满足我需要的语言。
这种两面性最突出的一个领域是,使用和扩展标准模板库(Standard Template Library,STL)..
<< 查看前言
【序言】
难道每门语言都难免日趋复杂,并最终绊倒在复杂性的门槛上吗?.
—Adam Connor
难用的话,少用就是了。
—Melanie Krug
事物的两面性
3年前,《Imperfect C++》快要完工时,我跟编辑说起这本《Extended STL》,当时我信心满满地声称它会是一本易读易懂、且轻薄短小得可以轻松从两个抽象层之间滑过的小册子。此外我还保证会在半年之内写完。结果呢?在写这篇序言的时候,离当初约好的截稿日期已经过去了一年半有余,而且,本来计划好的一本薄薄的、约十六至二十个章节的小册子现在也膨胀成了两卷本,其中第一卷洋洋洒洒四十三个章节(含“插曲”章节),哦,对了,CD上还有三章呢…但话说回来,当初..
<< 查看序言
【媒体评论】
“Wilson的STL大餐无疑是诱人的荚食,无论是对泛型编程的拥护者们,还是对正在开始接纳STL和C++的、殷切的C语言程序员们,或是正在重新看待C++的Java程序员们,以及为多种平台和语言开发软件库的作者们。祝大家胃口好!”.
——George Frazier,Cadence Design Systems,Inc.
“透彻论述了STL扩展中的细节和注意点。”
——Pablo Aguilar,C++软件工程师
“本书不仅论述了扩展STL,而且也扩展了我的C++编程思想。”
——Serge Krynine,C++软件工程师,RailCorp Australia
“你可能不是100%同意Wilson所说的一切,但总体上,他的书是对实用STL编程最有价值的、最深入的研究。”
——Thorsten Ottosen,M.C.S.,Boost贡献者
“Wilson是一个高明的驯兽大师,他让各式各样的第三方软件库,像驯服的野兽,跳过STL的火圈。他仔细地引导读者理解设计思想,指出陷阱,并确保你的脑袋没有被咬掉。”
——Adi Shavit,首席软件设计师,EyeTech Co.Ltd
“Wilson的书提供的信息,足以改变人们对STL扩展的焦虑或不确定程度,让其从‘胆怯畏缩’变为‘切实可行’。”
——Garth Lancaster,EDI/自动化经理,Business Systems Group,MBF Australia
“本书将打开你的眼界,并向你揭示STL抽象实际上有多么的强大。”..
——Nevin“:—)”Liber,19年的C++老手
“鲜有C++著作讲述扩展的技艺。而Wilson的作品,一贯地通过展示各种可行和不可行,以及其中涉及的权衡,将扩展的技艺推向极限。”
——John O’Halloran,软件开发主管,Mediaproxy
“基本的概念和实践,带领职业程序员超越标准库。”
———Greg Peet
“这本书不只是一本关于适应STL并用于日常工作的书,也是一次冒险旅行。它带你经历软件设计和概念、C++的强力技术,以及真实世界软件开发中的危险。换句话说,它是一本Matthew Wilson风格的书。如果你对C++的态度是严肃认真的,那我认为你应该阅读它。”...
——Bjorn Karlsson,主设计师,ReadSoft;《Beyond the C++ Standard Library:An Introduction to Boost》的作者
【书摘】
第1章 标准模板库
对STL的介绍本身就能写一本书,但我现在写的不是这样的书。介绍STL的书籍有很多(在参考书目中列举一些),我推荐您在阅读本书之前读读这方面的书。
1.1 核心概念
STL的核心是六个基本概念:容器、迭代器、算法、函数对象、适配器和分配器。
……
免费试读 第2章..
免费试读 第31章..
>>
进入在线免费试读>>
51CTO在线试读