C++ 标准程序库(侯捷译).pdf

所需积分/C币:49 2017-10-14 23:30:01 21.3MB PDF
3
收藏 收藏
举报

扫描版,清晰度还不错,可以作为工具书 这本包含最新资料的完整书籍,反映出被ANSI/ISO C++语言标准规格书纳入的C++标准程序库的最新组成。更明确地说,这本书将焦点放在标准模板库身上,检验其中的容器、迭代器、仿函数和算法。读者还可以找到特殊容、字串、数值类别、国际化议题、IOStream。每一个元素都有深刻的呈现,包括其介绍、设计、运用实例、细部解说、陷阱、意想不到的危险,以及相关类别和函数的精确樯记式和定义式
C++标准程序库 The C++ Standard library 自修教程与参考手册( A Tutorial and reference) Nicolai m. Josuttis著 侯捷/孟岩译 c++标准程序库 ThC十十S: andard Library Nicolai M.Jc Copyright 1999 by Addison Wesley Longman,Inc Simplified Chinese Copyright 2002 by Huazhong Science ard Technology University Press and Pearson Education North Asia Limited. All rights Reserved. Putiished by arrangernent with Pearso Education North Asia Limited, a Pearson Education Company. 版权所有,翻印必究 本书封面贴有华中科技大学出版社(华中理工大学出版社)激光防伪标 签,封底贴有“ Pearson education“微光防伪标签,无标签者不得售。 田书在版编目〔CIP〕数据 C十十标准程序库) Nicolai m, osuttis著俣捷/孟岩译 武汉:华中科技大学出版杜,2002年9月 IBN75609-2782-3 I. C 1.①N…②侯…@孟… .C十十-橙序投计 N。TP3H2 责任编辑:聞筠〔http:/yeka.xilubbs.comjunzhou@public.wh.hb.cn) 技术擔辑;孟岩 出版发行,华中科技大学出版社(武吾哈家山邮编:430074) 录排:华中科技大学高友科技文印中心 印:潮北新华印务有限公司 开本:?87×10921/16 即张:51.75 宇数:800000 版次:2002年9月第1版 印次:22年9月1次印刷 印敛:1-12000 定价:70R.00元 TsN75E09-2782-3P·478 巨细靡遗共然有序(侯趟译序) 巨细靡遗井然有序 (侯捷译序) 自从19}华C++ Standard定案以后,C++程序库便有了大幅扩充。原先为大 冢所熟知、标准规格定案前酝岷记久的SL! Standand Template library,栎准模板 程序厍〕,不再被咩独对待,而是被纳入整个C++标准程序库( Staudard library) 同时,原有的程序库(如 iostream)也根据泛型技术( geneses)在内部做了很大的 修改。可以说,C+ Standar的发布对C++社群带来了翻天覆地的大变动不是 来自语言本身,而是来自标准程序库。这个变动,影响C++程序编写风格至巨, C++之父助 me Stroustrup并因此写了一篇文章: erming Standard C+- as a neu anguage(载于CC++ User' s Joumal,199/05)。 我个人于1998年开始潜心研究泛型技术和STL,本书英文版《TC++ Standard Lray》甫一出版便成为我学习C++标准程序库的最重夏案头工具书之一。小有 心得之后,我写过数篇相关技术文章,从来离不开本书的影响和祸助。我曾经把 STL〔代表泛型技术目前最被广泛运用的一个成熟产品,是C艹标准程序库的 绝大成分)的学习比喧为三个境界(或层次): ●第一-境界:熟用STL ●第二境界:了解泛型技术的内涵与STL的学理乃至实作 ●第三境界:扩充STL 不论哪一个阶段,你都能够从本书获得不同程度的帮助。 第一阶段〔对最大多数程序员有立竿见影之效),我们餐要一本全面而详尽的 教稆,附带大量设计良好的范例,带领我们认识十数个STL容器( containers) 数十个STL算法( algorithms)、许许多多的选代器( 1teartors)、配接器( adapters 仿函数( functors)……的各种特性和用途。这些为教驚多的组件必狝经过良好的编 排组织和索引,才能成就一本效果良好、富教育性又可供长久查阅的案头工具书 上细鏖遗并然有序(候捷译序 在这阶救里,本书现极为优异。书中运用许多图表,对所有S组件的成 员做了极其详尽的整理。更值得称道的是书中交义参考( cross reference)做得非常 好,在许多关链地点告诉读者当下可参见哪章哪一节哪一页,对于阅读和学习带 来很大的帮助(本中文版以页页对译方式保留了所有交叉参考和索引)。 第二阶段〔从STL的运用晋升至泛型技术的学习),我们需要一些关键的STL 源代码(或伪码, pseudo code),帮助我们理解关键的数据结构、关键的编程技术 认识这些关健源代码(或伪码〕同时也有助提升第一阶段的运用深度(学会使用 样东西,却不知道它的道理,不高明@1 本书很多地方都捉供了C++标准程序库的关键源代码。不全面,但很关键。 笫_三阶段〔战为一位泛型技术专家;打造白己的SI.兼容组件),我们需要深 入了解STL的设计埋念和组织架构2,并深λ(且全面地)了解Sm实作手法3 是的,不入虎穴,不能得虎子;彻底了解STL如何被打造岀来之后,你才能写出和 sTL水交融、完美整合的白定义组件( user-defined components) 本书对第三阶段的学习也有相当帮助。虽然没能提供全面的STL源码并分析其 技术(那需要另外800页②),却提供了为数不少的订制型组件实作范例:p191,p213 提供了一个执行期指定排序准则并运用不同排序准贝的实例,p219提供了一个自定 义容器(虽然只是个简单的包装类别)·p22提供了一个“ reference语意”示范 作法,p285提供了个针对迭代器而设计的泛型算法,p288提供了一个用于关联 式容器的定制型 inserter,p294有一个自定的拌序准则,p14有一个自定的(安全 的)tack,p40有一个自定的(安全的) queue,p504有一个自定的 traits class for string,p6l4有一个自定的 stream操控器,p663有一个自定的 stream缓冲区,p735 有个自定的内存置器( allocator) 1这是乍见之下令人错愕的一句话。看电视震要先了鯉电视的原理吗?呵呵,话讲白了 就没意想」。这句话当然是对技术人员说的 2这方闺我推荐你看《 eneric Programing and the SIL- Using and Extending fhe c+ Standard Template Library》. by matthew h. Austen, Addison wesley1998详见稍后说明。 中铞本《泛型程序设计与STL》侯捷/黄侵尧合译,碁峰,200。 3这而栊推荐你看《ST源码剖桁析, Ifie Annotated sil Sources by侯捷,基峰,2002 详兕稍厅说明。 巨虾靡遗井然有序(侯捷译序) 除了众所暖日的STL,本书也涵盖了般不被归类为STL的 String程序库,以 及一般不被视为关的 iOStream和 Locale程序库4。部分矿有关连,以 IOStream 为主千。在GUI(图形使用接冂)利 applie- atioN raluewπk〔应用程序框架)当道 的今大, IOStream提供的输出输入可能对大部分人失去了价值,但如果你希望开拓 OO技术视野, IOStream是一颗沉睡的珠宝。 泛型技术不仅在C++被发扬光大,在Java上也有发展5,在C并上亦被众人期 待。从目前的势头看,泛型技术( Generics)或许是面向对象( Object Oriented)技 术以来程序编写方面的又一个巨大冲击。新代C++标准程序库昏将采月更多更复 杂具威力的泛型技术,提供给〔十+社群更多更好更具复用价值的组件 不论你要不奖、想不想、有没有兴趣在你的程序编写过程中直接用上泛型技术, 至少,在C++程序编写过程中你已经不可或缺丁泛型技术带来的成熟产品:C++标 准程序库。只要你具备C+语言基础,木书便可以带领你漂亮地运用C艹标准程 序库,漂亮地提升你的编程效率和程序品质。 面对陌生,程序员最大的障碍在于心中的怯懦。 To be or not to be, that is the question!不要像哈姆雷特-样犹豫不决。面对光明的技术,必须果敢 关于术语的处理,本书大致原则如下; 1.SIL各种数据结构名称皆不译,例如aray, ector..list, deque, hast tabl,map,set, sack, queue.tre.。虽然其中某些已有约定俗成的中文术语,但另一些没有 既标濯又被普遍运用的中文名称,强译之会令读者樘目以对,部分译部分不 译则阅读时词性平衡感不佳(例如“面对向量和 deque两种容器.”就不如 面对 vector和 deque两种容器”读起来顺畅)。因此,数据结构名称全 部不译。直接呈现这些简短的英文术语,可能营造更突出的视觉效果,反而 有利阅读。技术书籍的翻译不是为了建立全中文化阅读环境,我们的读者水 4这方面我见过的唯一专著是《 Staudard c++ iOStreams and locales-Atwe Programmer's aiud Reference ), by Angelika Langer and Klaus Krett. Addison Wesley 2000 5(1)G: A Gereri Jaza, by Philip Wadler, Dr. Dobb's Journal February 200 (2)jsr-0000I4:AddinggEneristothejauprogranuinyLanguagehttp:/jcpory/ aboutlavacommunityproccss/rcvicw/jsro14/index. html. 请参考htp/www.boost.ore,这个程序库据称将成为下代C+标准 巨纽麻遍然有序〔侯捷详序 平也不可能受制于这些英文单词a 2S∏六大组件的英文名称原打算仝部保留,但由于处处出现,对版面的中英 女比例形成视觉威胁.因此全部采用以下译名: container容器, algorithm算 法, iterator选代器, adapter配接器, functor仿函数7, allocator配置器。 3午何一个被保留的英文关键术语。其第一次(或前数次)出现时尽可能带上 中文名称。同样地,任何关键的中文术语,我也会时而让它中英并陈。 关于编排,本书原则如下 1,仝书按英文版页次编排,并因而得以保留原书索引。索引诃条皆不译。 2.中文版采用之程序代码字体( Courier new85)北文本字体(细明体95)小, 英文版之程序代码字体却比其文本字体大,且行矩宽。因此中文版有大篇 幅程序行表时,为保持和英文版页次相应,便会出现较多留白。根据我个人 对书籍的经验,去除这些留白的最后结果亦不能为全书节省五页十页;填满 每一处空白却丧失许多立即可享的好处,为智者不取②。 旦你从本书获得了对C+标准程序库运用层面的全盘掌握与实践经验之 后,可能希望对SL原理乃至实作技术做更深的研究,或甚至对泛型编程( Gener Prograrnming)产生无比狂热。在众多相关书籍之中,下面是我认为非常值得继续 进修的四本书 1. i: Prgramming and the STL- Using and Extending the C++ Standard Template Library>, by Matthew H Austern, Addison Wesley198本书第一篇(前 五章)谈论ST的设计哲学、序库背后的严密架构和严谨定义。其中对于 STL之异于一般程序库,有许多重要立论。其余部分(第二篇、第三篇)是 STL的完整规格(分别从 concepts的角度和 components的角度来阐述),并 附范例程序。 7原书大部分时候使用 function object(函数对象)词,为求简及突出,中文版全部 改用共另个名称fmor(仿函数)(见第8章详注) 巨细摩遗井然序(侯捷译序) 2.《S冮L源码剖析,"Ahat!sr" L Soures》by侯捷,荟峰,20.本书剖析 sTL实作技法,详实揭示并注释Sr六人组件的底层实作,并以公认最严谨 的scH( Silicon Graphics Inc.)SIL版本为剖析对象。附许多特彩分析图,对 于髙度精巧的内存配置策略、各种数捃绪构、各种算法、乃至极为“不可思 议的配接器( adapter)实作手法,都有深入的剖析。 3.《 Efectice STL》, by Scott Meyers, Addison Wesley200l。本书定位为ST的深 层运用。在深层运用的过程中,你会遇到一些难解的问题和效率的考虑,你 需要知道什么该做、什么该避免。本书提供50个专家条款。请注意,深层运 用和效率调校,可能需要读者先对底部机有相当程度的了解 4. AModren C++ Design,》 by Andrei Alexandrescu, Addison Wesley2001.将泛型 技术发挥刹淋漓尽致、令人月瞪口呆的一本书籍,企图将泛型技术和设计模 式( design patterns)结合在一起。是领先时代开创先河的一本书 ◆今心 本书由我和孟岩先生共同完成孟岩在大陆技术论坛以C+ oo/Generics驰名, 见解深隽,文笔不凡。我很高兴和他共同完成这部作品。所谓合译,我们两人对全 书都有完整的参与(而非你一半我一半的对拆法),最终由我定稿。本书同时发行 繁体版和简体版,基于两岸计算机术语的差异性,简体版由孟岩负责必要转换。 侯捷200205123于新竹 http://www.jihou.cor(繁体网站 http://jjhcu,csdnnet(简体网站) d jhouEjjhou.cmn(个人电f邮箱 孟岩译序 孟岩译序 r技术书籍市场,历来是春秋战国。一般来说,同一个技术领域单总会有那么 数本、十数本、甚至数本定位相似的书籍相互激烈竞争。其中会有…些大师之作 脱颖而出,面南背北,黄袍加身。通常还会有后来者不断挑战,企图以独到特色赢 得自己的一片天地。比如说在算法与数据结构领域, D,E Knuth的那套《 The Art of omputer Programmig》〉一至三卷,当然是日出东方,惟我独尊。但是他老人家的 学生 Robert Sedgewick凭着一套更贴近实用的《Agr加C》系列,也打出了自 已的一片天下,成为很多推荐列表上的首选。就C++应用经验类书籍来说, Scott Meyers的《 Effectice C++》称王称霸已经多年,不过其好友 herb sutter也能用本 Exceptiona C+》获得几乎并驾齐驱的地位。嗨,这不是很正常的事吗?技术类 书鐠毕竟不是诗词歌赋。苏轼一首“明月几时有,把酒问青天”,可以达到“咏中 秋者,自东玻西江月后,余词尽废”的程度,但怎么可能想象一木技术著作达到“我 欲乘风归去,又悉琼楼玉宇,高处不胜寒”的境界!谁能够写出一本技术书,让同 领域后来者望而却步,叹为观止,那才是大大的奇迹! 撚而,您手上这本《TheC+ Standard Library》,作为C+标准程序库教学和 参考类书籍的定音之作,已经将这个奇迹维持了三年之久。按照T出版界时钟, 三年的时间几乎就是半个世纪,足以锤炼又一传世经典! 1998年C++Sar通过之后,整个C++杜群面临的最紧迫饪务,就是学习 和理解这价标准给我们惜来的新观念和新技术。而其中对于C艹标准程序库的学 习需求,最为迫切。C艹第二号人物 Andrew Koenig曾经就C+的特点指出:“语 言设计就是程序库设计,程序库设计就是语言设计”1。C++ Standard对程序库所作 的巨大扩充和明确规蒞,实际上即相当于对C++语言的能力作了全面提升与扩展, 意味着你可以站在无数超一流专家的肩上,将最出色的思想、设计与技术纳入囊中 1“ Language design is library desigr, library design is language design”,參见 Andrew Konig, Barbara mot合著巛 Ruminations on c+》第25,26章标题。

...展开详情
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
  • GitHub

    绑定GitHub第三方账户获取
  • 签到新秀

    累计签到获取,不积跬步,无以至千里,继续坚持!
关注 私信 TA的资源
上传资源赚积分or赚钱
    最新推荐