STL中文版.pdf

所需积分/C币:27 2016-10-30 10:10:04 9.89MB PDF
14
收藏 收藏
举报

这个是PJ版的,作为源码分析的入门,初学者应该好好看看
C++ STL 中文版 A图上1(,后难瘦括)是一个动强大的工使用它可最大度地面生产 故,作质通性建57C了半的器亡们陶范了用干工一开发一个大距序城有和。 在,在过本众人已久的节中,利者性对+5固行了悦而军A的好。机的每一讲进子5的一个组成 升包 吾成都基黑用送的属明 应酚国0C+恒准的全正因睡 座用和实现各都的蛋所方去 点的代码实 卖用习题 本书里出了口及术市列出了相圣的考 丰书主环了本的05标率实是而经检价已+型不可的空典 PJ PLAUGER是市的的公司的总孩:该公负为行台标准心和口+的库挡段:身距计 ru要和iH 到?的用国据字长朝以平在C和c国际化 标进理中一直非证 ALEXANDER A. STEPANOV于A7以图加判福后亚A研究实罩的型编语目的加 MENG LEE目前是研需的一名技术人在这里和sm开了相的和,5支造50 +份化要员由,卡得认可 DADR. MUSSER厘阳工平际计机科牢系化,专门研究应细程地与的一短为5打下了 责任瑞福芜歌 S日N7-5083·1058 sBN1-582-1058-6/TP·221 定价:6,租元 8750831Ag TP312 1860 c深入C++系列 c++STL中文版 P,J。 PLAUGER ALEXANDER A STEPANOV MENG LEE DAVID R. MUSSER 王听译 北方工业大学图书馆 00516481 中图电力出版社 内容提要 本书对C+STL谢行了全面而擦入的述。SIL(准模板库)是在惠普卖验室中 开发的,已纳及 ANSLISO C++标作。其中的代码用棋板类及板函数的方式,可以极 大地龊高編程效率,本书由 P.J. Plauger等四位对C艹$心的实瓔有着卓越献的大师撰 写,详细讨论了C艹SL的各个部分。全书分为16章,其中的13章通过背景知识、功 能描逊、头文件代码、测试程序和习题,分别讲述了C艹+8TL中的13个头文件:其他章 节介绍了STL中广泛涉及的三个主题一迭代器、算法和容器。本书附录列出了接口和术 语袤.最后列出了参考文献。 本书适合对C+有一定了解的裎序员及高等院校师生读 图书在版编目(CP)数据 c+SIL中文版!(美〕普劳格( P J, Plauger)等箸;王盺译 北京:中国电力出版社,20025 ISBN75083-10586 C..Ⅱ①普.②王…,ⅢC语言程序设计Ⅳ.TP312 中因版本图书馆C数据核字(2002)第028461号 著作权合同登记号图字:0120020709号 本书英文版原名:TheC++ Standard Template ibrary Published by arrangement with Prentice-Hall, InG Ai rights resered 本书由美国培生集团授权出版 中国电力出版社出版.发行 北京里河6号1Dm4htp://www.infopower.comcn 北京地矿印刷厂印刷 各地新华书店努俜 Mn年5与第·皈m钋☆月北京第次甲刷 77号米×02毫米1开本35印张71千字 定份60元 版权所有翻即必究 (本书刘有印装质量问趣,我冮发行部负责退换 译者序 众所周知,C十是一门功能强大的编程语言,支持多种编程典范( paradigm),其 间包括PB( Procedure-Based)、OB( Object- Based)、O0〔 Object-Oriented)以及新近 出现的GP( Generic Programming 作为GP的第一个广为流传的实现,STL( Standard Template Library)自被C++标准 化委员会接纳以来,已经对整个C++社区产生了极为深远的影响。程序员可以放心地使 用SIL所提供的常用数据结构和算法,避免“每次都重新发明一个轮子”的情况出现 有效地提商编程效率:再者,为了充分利用STL已有的资源,C+中 SL Standard library 的实现方式也有了很大的变化,一些常用的组件(如: IOStream、 string等冫都提供了和 STL交互的接口。 随着SIL在C++补区的逐渐普及,对于SIL的教学也开始变得 火起来。在国外 早在1995年,就有 alexander a. Stepanov(STL之父)和 Meng lee(STL的第一个实现 者之-)的文章面世,199年更DadR. Musser(GP理论的又一元老)所著的《STL Tutorial and Reference Guide》出版,之后更是现了TheC++ Standard library》{ fosuttis 1999、《 eneric Programming and the stl》( Auster,199,本书中文版将由中国电力 出版杜引进出版,详情请访问:htp/www.infopower,com.cH)、《effectivesty》(Meyers 〈TheC++ Standard Template Library》( Plauger等,200)等大师级的作品 面反观国内,在2000年前,市面上讲述标准C++的书籍寥寥无几,而讲述STL的 书籍更是有如凤毛麟角。这使得绝大多数C++程序员对最新的 SUANSI C++为开发捉 供的强大支持缺乏必要的了解,导致了诸如lst、 binary_search等常见数据结构和算法的 重复实现,道成了人力物力的浪费。这不可不说是国内C++教学的失败。 但是,从201年开始情况有所好转国内一些 ANSI C+学习的先行者开始在网络上 向大家介绍 ISO/ANSI C++的一些新特性,以使国内的C++学习能够跟得上C+社区的最 新发展,这其中自然少不了对STL的介绍。在这段时期内,出现了一些以ANSC++为主 题的网站,如:SI小组(hp/www.smilingcomcn/grouphonepage.ecgi?group_id=11916) dimensions网站(hp:/www.dimension5.ory),还有csdn(http://www.csdn.net)讨论区 的C++板块等。另外国内的各家出版在也开始有目的地从国外引入一些大师的著作〔如 我上面提及的四本大师级着作都将在近期出版中文译本},以更快地让国内的读者接触到 来自国外主流的声音。 机缘巧合之下,我有幸从中国电力出版社得到了翻译由PJ. Plauger、 Alexander a 译者序 Stepanov、 Meng Lee和 Dayid r. Musser四位大师所著的《TheC++ Standard Template Library》书的机会,从而得以更早地接触到大师们的言论。作为本书的译者,我自必 要介绍一下四位作者的身份,以加重本书的砝码(古人有云:不看僧面看佛面,虽然我 人轻言徵,但这四人在国外可都是响当当的人物哦巴〉作为本书第一作者的 P.. Plauger, 对于国外CC++社区来说可是一个如耳的名字,他所著的《 The Standard C Library 等书都早已成为经典著作,并且,目前使用人数最多的C+-編译器(MSⅤC++)中自带 的SL就是出自他手,其实力可见·斑。第二作者 Alex Stepanov,则更是不得了,听听 别人都叫他亻么:GP之父!哇………,STL就是出自他那天才的思想,并且他还身体力 行,连同本书的第三作者—— Meng Lee,实现了STL的第一个实现( HP STL)。而本书 的第四作者 David Musser,作为 Stepanov的最初且时间最长的合作者,对GP理论的形 成也称得上是功不可没 由于PJ. Plauger亲自实现了一个商业化的ST版本,那么作为讲述STL实现的本 书束说,则更显得意义非凡了。虽说,只要轮子好用就可以不用去管轮子是怎么散出来 的,但适当地了解一世轮子制作过程中的知识,肯定可以帮助我们患好地使用这个纶子。 在本书中, Plauger把STL分成不同的部分,一个一个头文件地给我们讲述每一邮分是 如何做出来的,我们该如何去使用它们,然后给出了测试这些组件的完整代码,最后为 了让读者加探对STL的理解,更是给出了一些颇具挑战性钓习题[出于这些习题具有一 定的参考价值,所以我们可能会在C+ew(htp/ Www.c-vLew. otg)杂志上逐步对这些 题的解法给出一出讨论以及自已的方案:以方便大家对于STL约理解。]从某种意义 上来说,本书甚至可以改名叫做《S∏从入门到精通》。不过,金无足赤,本书也存在 着…些小小的问题,因为是为∫向读者展示一个简单的SL实现,本书给出的代码在不 同程度上存在着异常安全性的问题异常安全性,始终是C++中的一个难点所在,目前对 于这方的最好探讨可以参见 Herb sutter所著的《 Exceptional C+〈Sute,19,本 书中文感将在近期内由中国电力出版社引进出版)或GoW网站(htt: ww. gotw. ca)] 币且在不少地方的做法与现有约C++标准稍有出入(这也可能是由于ⅤC++对于C+标 准的支持不足的缘放吧);另外可能也是最重要的一点是,本书对于读者的要求比较高, 它假定读者对C+的一些比较高级的用法都有所了解,虽说我在翻译过程中尽量对这 些地方给出一些注释,但这依然会使读者产生一墼困惑(幸好据小道消息透露,最近国 内应该会出版很多有关C+的经典著作,因此这个问题在一段时期后也就自然会不成为 闷题了③) 最斥,对于本书中文版的出现,我想感谢以下几个人,首先当然是本书的作者PJ P| auger等人,感谢他们给我们来了如此好的一本书,在翻译过程中,我曾经就书中的 一些问题和 Plauger互通过几次emai,更正了原书中的一些错误:另外就是来白于 brainbench的 Andrei iitchenk,对于本书代码的异常安全性问题,就是他在 comp. lang. c-+ moderated上提出来的;然后就是中国电力出版社负责该书编辑的刘江先 译考序 lI 生、关敏女士、宋宏女士以及參与此书中文版出版然全体贞工,感谢他们给予我机会翻 译出书并最终H版:再接下来就是ju,没有他的帮助.我也不会那么早就开始学习 STL;最后我要感谢的就是经常在网上和我讨论 ISOJANSI C+以及STL的朋友们,句 括 babysloth、bugn、myan等人,和他们的讨论也使得我对STL有了更深层次的理解 另外,如果对本书有任句疑问的话,可以与我联系,我的emai是:cber@email.com.co 王昕 2002年5月 序 标准模板库< Standard Template Library:简称STL〕是 ANSIIS0 C++语言的库的一个主要组成部分。它最初是惠曾实验室 ( Hewlett-Packard labs)的产物,开发者为 Alexander Stepanov及Meng Le(参见S&I95),主要基于早期的、由 Stepan和 David r musser 两人完成的工作。(参见M&7、M&S89及M&S94。这里所有参考文 献都列于本书后的“参考文献”中。)你将会发现在这个库中包含着对 于C+中的模板( template)的各种使用,其中大部分的使用都值得炫 耀,并且具有良好的连贯性。确实,STL已经开始有意义地改变着许多 程序员编写C十代码的式 本书展示了怎样使用STL中提供的模板类( template class}及模板 酹数( template function),-如C++标准中所要求的一样(参见条款20 及23-26)。我们在此将STL视为标准C十+中所定义的庞夭的库中一个 相对独立的子集。C++中库的设计与 ANSiso标准C(ANS9与Io90 中的库设计一脉相承。因此,也可以将本书视为 P. Plauger先前的两本 书,《 The standard c library》(Pn9)与《 The draft standard C++ Library (P895)的一个后续版本。几乎所有C+程序员感兴趣的有关库的内容 都可以在这三本书中找到。 C++标准 1998年,C++标准正式通过,并且将在接下来的一段时间中保持 种稳定的状态。它既是ANSI标准,也是ISo标准,也就是说,它既是 美国的国家标准,也是一种全球通用的标准。作为标准化进程的一部分, 整个标溎C++话言及庳第一次完整地描述在一起。一个相对较晚加入这 个标准化进程的事件是在C+准的草案中接纳ST为C+标准的一部 分。现在,标准C十+的编译器及库的各种实现坞不过刚刚出现。也就是 说,即使是很有经验的〔++程序员也将发现本书中有许多东西是全新的 同样,在1994年6月被标准化委员会接纳为C++标准草案的一部 分之前,对STL的早期描述(至少早于S&L9)仅限于一个相对狭窄 的范囤内。在被接纳的过程中,STL本身又被重新组织并且在几个重要 的环节做了修改。现在,在标准C++中的STL已经不再是由患普实验室 开发出来的那套软件开发包,同时它与那些由不同的代理提供的强化版 1的标准化文名在正式通过后的5内将保持-种总定的状态,期间即使需要对它进行傷诳,怕 要等到5年后再提交给标准化委员会进行表决,一泽岩注 序 本也不同。这乜就是说,即使是那些有着巨期的STL使用经验射程序员 也可以从本书中获得新的知识。你将会在本书中发现对STL的完幣描 述,-如在C+标准中指定的那样。 本书中还将至少告诉你一种实现STL的方法书中提供了大概600 行经过洳试、证明可行的代码,同时这些代码担被证实可以移植到许多 C++编译器上实际上,这些代码在本质上和 Microsoft visual c++、1BM Visual Age或其他商所提供的C编译器中的STL代码几乎是相同 的。我们仅仅是在排版及符号表达方面做了小小的改动,以使得这鬯代 码在书巾更具有可读性,同时将它们用来作为教学不例也比较方便。 作为对C++库的扩展,书中提供的这些代码可以工作于任何其他 C+库上(参见附录A)。然而,当与一个完全符合C++标准的库一起 工作时,它表现得尤为出色。我们尽可能地去除了那些不具有可移柏性 或不可能被广泛利用的代码。那些过分依赖于C++语言中最近才姐入的 特性的代码,如模扳的分特化( template partial specialization)等,有 可能在一些编译器上导致问题的产生。你也可以在那些商业化的STL版 本中发现对于这些特殊情况的各种不同的折衷处理。 无论如何。你都可以通过使用本书中提供的代码,获得-些对:如 何使川由模板焖成的库的宝贵经捡,而使用模板库也已经开始成为C+ 出界中的一个重要标准。同样重要的是,我们相信看完一个实际的STL 实现将有助于你更好地理解和应用它 这就引入了本书的另一个目的。除了给出STL的标准,以及实现它 的叫行代码之外,本书还可以作为一本如何使用该库的教程。你将发现 在本书中存在着一些有用的背景信息,告诉你STL是如何演变成现在的 这个版本的,使用它意味着什么,以及何使用它。为此并不需要阅读 利理解我们所提供的所有代码。哪怕是对于本书的粗略学习,也能给你 带来少有益的收获。不需要是老手才能从本书中获益,那些偶尔才显 得比较老练的程序员将会发现这里所提供的信息简直就是无价之宝 本书钓日的不是教你如何写C++代码。我们假定你已经了解了足够 多的C+如识,已经可以看懂简单的C++代码。虽然在本书中出现的代 码并不是那么简单,但不要怕,我们会解释其间所使用的各种技巧。 扩展SL 木书的最终目的就是告诉程序员如何设计及实现对STL的扩展 STL集合了大量的算法、数据结枸以及编程技巧。然而,它并没有提供 程序员可能需妥的全部特性。相比面吉,它只是提供了那些核心的、被 广为使用的特性,并且描述了这些核心代码的编写规则。 当你掌挥了这些规则后,就可以往STL中添加囱己的算法,并丑让 它与已有数据结构一同正常地工作。你也可以添加自己的数据结构 使之与己有的算法协同工作。通过将本书中提供的STL代码作为例乙来

...展开详情
试读 127P STL中文版.pdf
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
  • GitHub

    绑定GitHub第三方账户获取
关注 私信 TA的资源
上传资源赚积分or赚钱
    最新推荐
    STL中文版.pdf 27积分/C币 立即下载
    1/127
    STL中文版.pdf第1页
    STL中文版.pdf第2页
    STL中文版.pdf第3页
    STL中文版.pdf第4页
    STL中文版.pdf第5页
    STL中文版.pdf第6页
    STL中文版.pdf第7页
    STL中文版.pdf第8页
    STL中文版.pdf第9页
    STL中文版.pdf第10页
    STL中文版.pdf第11页
    STL中文版.pdf第12页
    STL中文版.pdf第13页
    STL中文版.pdf第14页
    STL中文版.pdf第15页
    STL中文版.pdf第16页
    STL中文版.pdf第17页
    STL中文版.pdf第18页
    STL中文版.pdf第19页
    STL中文版.pdf第20页

    试读结束, 可继续阅读

    27积分/C币 立即下载 >