C++.STL中文版

4星(超过85%的资源)
所需积分/C币:9 2015-05-13 15:52:45 9.63MB PDF
10
收藏 收藏
举报

c++ 中非常经典且较实用的经典书籍,推荐下载,
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代码作为例乙来 IIL 使用,你将很快学会如何以最少的新增代码来处琿渐的问题,并且发现 这些新增的代码可以在以后的项目中重用。这也就是设计库的最终原 因 本书的结构 本书的结构看起来更像是STL代码本身的结构。C+标准中列出了 大量的头文件,但只有其中的13个头文件中定义了S中所有的模板。 这13个头文件的每一个在本书中都有对应的一章。其他的章节则全面 地介绍了STL,并讨论了STL中三个涉及较为广泛的主题—迭代器 iterator)、算法( algorithm)和容器( container)这些头文件中的大 部分都有着适量的相关内容,因此也就引起了一些相关的讨论。有关它 们的相关章节必然会导致讨论范围的扩大 每章都以相同的模式讲述了一个头文件。一开始是一个简瓶的背景 介绍小节,接若就是有关这个头文件内容的功能性描述,然后是对于如 何更好地使用该头文件屮提供的特性所给出的一些建议。再接着给出了 组成头文件的C+代码,并伴随有代码是如何工作的有关注释。我们还 为每一个头文件给出了一个小小的测试程序,给出至少个粗略的例子 演示每一个定义的模板是如何使用的。 在每一章的最后给出了一些习题。如果本书是作为某个大学课程的 课本的话,这些习题可以当作家庭作业来完成。大部分习题都是简单的 练习,例如使用库,或是代码重写等。它们能够使人理解实现中的某些 重点,或是展示了实现中的一些合理变更。那些较难的习题都标注出来 了,它们可作为一个更大范围的项目的基础。那些自学本书的人可以将 这些习题炸为·种锻炼,以瀲发更多的思考 代码 本书中提供的代码以及对这些代码的描述都是基于惠普公司被广 泛使用的STL板本。这个版本包括如下的声明: Copyright@ 1994 by Hewlet-Packard Company Permission to use, copy modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. Hewlett-Packard Company makes norepresentatiol about the suitability of this software forany purpose. It s provided as is without express orimplied warranty,

...展开详情
试读 127P C++.STL中文版
立即下载 身份认证后 购VIP低至7折
一个资源只可评论一次,评论内容不能少于5个字
zzjbook 很好很详细的资源,谢谢分享 。
2015-05-13
回复
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
  • 签到新秀

关注 私信
上传资源赚钱or赚积分
最新推荐
C++.STL中文版 9积分/C币 立即下载
1/127
C++.STL中文版第1页
C++.STL中文版第2页
C++.STL中文版第3页
C++.STL中文版第4页
C++.STL中文版第5页
C++.STL中文版第6页
C++.STL中文版第7页
C++.STL中文版第8页
C++.STL中文版第9页
C++.STL中文版第10页
C++.STL中文版第11页
C++.STL中文版第12页
C++.STL中文版第13页
C++.STL中文版第14页
C++.STL中文版第15页
C++.STL中文版第16页
C++.STL中文版第17页
C++.STL中文版第18页
C++.STL中文版第19页
C++.STL中文版第20页

试读结束, 可继续阅读

9积分/C币 立即下载