STL源码剖析简体中文完整版清晰扫描 .pdf

所需积分/C币:39 2018-09-09 18:30:11 33.78MB PDF
收藏 收藏 2
举报

STL源码剖析简体中文完整版清晰扫描 .pdf
STL源码剖析 The Annotated STL Sources 向专家学习 型别技术、内存管理、算法、数据结构、STL各类组件 之高阶实现技巧 侯捷 华中科技大学出版社 图书在版编目CIP)数据 STL源码剖析/侯捷 武汉:华中科技大学出版社,2002年6月 ISBN7-5609-2599-1 I.侯 Ⅲ.计算机软件-STL源码 Ⅳ.TP31.1 本书封面贴有华中科技大学出版社〔原华中理工大学出版料) 激光防伪标志,无标志者不枵销售。 版权所有盗印必兇 STL源码剖析 侯捷 http://yeka,xilubls.toil 资任编辑:周 junzhou@public. wh, hb, cn 封面设计:潛群 技术編辑孟岩 青任临印:张正林 责任校对;张兴田 出版发行:华中科技大学出版社 武昌喻家山邮編:430974电话:(27)87545012 录排:华中科技大学惠友科技文印中心 印剧:湖北新华印务有限公可 开本:78X:092116 印张:33 插页:2 字数:600000 版次:202年3月第1版 印次:2002年6月第1次印刷 印数:1—1000 ISBN7-509-2699-1/TP·464 定价:68.00元 本书若有印装质量问题,请向出版社事场部调换 源码之前 了无秘密 献给每一位对GP/STL有所渴望的人 天下大事必作于细 侯捷 高屋建瓴细致入微——《STL源码剖析》引介 高屋建瓴细致入微 《STL源码剖析》引介 身为C++标准库最重要的组成部分,STL(标准模板库)不仅是一个可复用组件库, 而且是个包罗算法与数据结构的软件框架( framework)。“框架”这个词,本身就 有庞大、稳定、完整而可扩展的涵义。软件框架,则是用一行行精细准确的源码,构造 个庞大、稳定、完整而可扩展的软件架构。稍有软件开发经验的人都知道,要做到这 些,谈何容易!STL在1994年走入C十标准,使得原本即将推出的C+标准延迟4年 问世而无怨无悔,并为之对内容做巨幅改进。而今STL不仅为千千万万C++程序员所 日常运用,而且获得极高的学术赞誉,成为个典范、一种境界。作为一个软件框架, STL所取得的成功,实在可以用“辉煌”来形容,其所内涵的软件思想和技术经验,更 是无比的深厚与精致 学习编程的人都知道,阅读、剖析名家代码乃是提高水平的捷径。源码之前,了无 秘密。大师们的缜密思维、经验结晶、技术思路、独到风格,都原原本本体现在源码之 中。在你仔细推敲之中,迷惑不解之时,恍然大悟之际,你的经验、思维、视野、知识 乃至技术品位都会获得快速的成长。特别是面对STL这样优秀而普遍的作品,无论你是 为了满足作为程序员第二天性的求知欲,还是在日常工作中解决实际问题,总有一天 你会打开一个叫做< vector.>或者< algurithm>的头文件,想把STL背后的秘密看个究竟 英文里有一个常用短语,叫做“ under the hood”,钻进魔术师的帐篷,屏住呼吸,瞪大 眼睛,把那些奇妙的魔法看个通透,让自己的理解和技艺获得巨幅的提升,这种诱惑, 任何一个程序员都无法抵挡! 不过,要想研读STL源码、绝对没有那幺简单。STL是精致的软件框架,是为优 化效率而无所不用其极的艺术品,是数据结构与算法大师经年累月的智能结晶,是泛型 思想的光辉诗篇,是C十+高级技术的精彩亮相!这些灿烂的赞誉,体现在数万行源码里, 对于一个初涉此道的学习者来说,就是一个感觉:“难!”无论你是浅尝辄止,便退出 The annotated stl sources II STL源码剖析 这次探险,还是勇敢地向浓雾中前进,当你受困于STL精致的大网之中,为那些迷般 的结构和操作感到茫然无措的时侯,所有人都会冒出一个念头:“如果有这样一本书, 既能够提纲挈领,为我理顺思绪,指引方向,同时又能够照顾小节,阐述细微,帮助我 更快更好地理解STL源码,那该有多好!” 望着长长的SL著作列表,一个“真正”的C++程序员,多少会有一点遗憾。自 从STL问世以来,岀版了大量的书籍,帮助读者了解它的思想,学习它的用法,掌握它 的技巧。其中佼佼者如 Matt Austem的《 Generic Programming and stL》, Nicolai josuttis 的巛TheC++ Standard library》, Scott Meyers的《 Effective sti》,已成C++经典名著 然而,定位在引导学习者进行STL源码分析的著作,可以说是凤毛麟角。毕竞,既要能 高屋建瓴,剖析大架构,不为纷繁琐碎之细节而迷乱,又能具休而微,体现细致之处的 精妙缜密,不因为宏大体系而失之粗略,无论对于专家高手还是技术作家,都是太难达 到的目标。 读了这本《STL源码剖析》之后,我认为,这个遗憾终于被补足了 本书的作者侯捷先生是盖声海峡两岸的著名T技术作家,在C++、 Windows系统 原理、泛型理论和STL等技术领域有极深的造诣。然而,侯先生最令人称道之处,乃是 他剖析大架构的能力。所谓剖析大架构,就是要在洋洋洒洒数以万行计的源码中,精准 定位,抽取核心观念,高屋建瓴,纲举目张,将看上去乱麻一般的源码梳理得头绪清晰, 条理分明,同时又照顾细节,参透精微,把一个个关键动作阐述得通通透透。这种能力, 我以为至少在华人技术作家中,侯先生堪执牛耳!在他的名作《深人浅出MFC》中, 侯先生将自己这方面的能力展现得淋漓尽致,而在这本《STL源码剖析》中,我们看到 了又一次更加精彩的表现。 我有机会作为大陆最早的几个读者之一,详细拜读了侯先生的这本STL专着,内 心产生了一种强烈的技术冲动。说得俗一点,就是觉得很过瘾!具体来说,我认为这本 书至少有四大特点,使它成为我所见过的最出色的一本STL源码剖析类著作。 首先,选材精当,立足高远。STL是一个标准,因而有各种实现版本。本书所剖析 的 SGI STL,可以说是设计最巧妙、思想最深刻、获得赞誉最盛、认同最广的STL实现 品,当然,这份出自SL之父 Alex Stepanov,以及 Matt auster, Dayid musser等巨 匠之手的经典作品,剖析阐述起来自然也需要花费更大的心力。侯先生藉其扎实的理论 与技术素养,毅然选择这份作品来剖析,是需要极大勇气与自信的。同样,本书对读者 的预期,也是很高的,读者不但要有扎实的基本功,更要有掌握STL的兴趣与坚韧意志 读这本书,你可以有充分的信心,学到的是超一流大师的思想和经验,所谓名门正派, 高屋建瓴 The annotated stl sources 高屋建瓴细致人微——《STL源码剖析》引介 其次,脉络清晰,纽织顺序匠心独具。任何人打算系统阅读STL源码,所必须做 出的第一个决定就是,从何处开始?我在初读此书时,-个最感疑惑的地方就是侯先生 竟然把 allocator放在所有组件之前讲述。要知道, allocator这个东西,对一般的使用者 完全透明,根本感觉不到其存在,以至于在名著巛TheC++ Standard libaray》中, nicolai Josuttis*将这一部分放在全书最后。既然如此,又何必让这个无名小卒占据头版头条?我 开始还真是不理解,直到后来,我自己有一些扩展STL的实践,才发现,用的时候你 固然可以对 allocator不闻不问,但一旦要领悟SIL的工作原理,或者要自己扩展STL 的功能,则对于 allocator的掌握几乎是第一先决条件。不了解 allocator,则无论剖析也 好,扩展也罢,必然处处碰壁。侯先生毫不迟疑,首先帮读者搬开这块绊脚石,理出头 绪,实在是匠心独具。紧接着的第三章 iterator及 traits,直入STL的核心观念与关键技 术,剑走中锋,直取要害,高举高打,开诚布公,直接把理解STL的钥匙交到读者手上。 此章一过,读者神完气足,就可以大刀阔斧地打通STL的重重关隘,此布局只要稍有变 化、读者的学习难度势必猛增。侯先生的此种安排,实在是大家手笔! 此外,本书在技术上迎难而上,详略得当,完整而重点突出。了解 SGISTL的读 者都知道,这份作品对C十标准中的STL做了大量的扩充增加了专用的高效 allocator, 用以操作巨型字符串的rope,单链表sist,以及万众企盼的hah容器等等,再加上STL 本身就有很多精微之处,技术上的难点不少。此类书籍的作者,但凡稍有一丝懈怠之心, 大可以冠冕堂皇地避重就轻。然而侯先生在此书中对重点难点亳不避讳,无论是标准功 能还是非标准功能,只要对读者理解STL架构有益,只要有助于提高读者的技术,增长 读者的视野与经验,书中必然不是繁难,将所有技术细节原原本本和盘托出。另一方面, 所谓剖析源码,其目的在于明理、解惑,提高自身水平,并不是要穷经皓首,倒背如流 因此,一旦道理讲清楚,书中就将重复与一般性的内容一笔带过,孰轻孰重,一目了然: 详略十分得当,这一点对于提高读者的学习效率,有着巨大的意义 最后一点,本书通过大量生动范例和插图讲解基本思想,在同类书籍中堪称典范。 虽然我把这一点放在最后,但我相信大部分读者站在书店,随手翻过这本书,得到的第 印象便是这一点。STL之所以为大家所津津乐道,除了其思想深刻之外,最大的因素 是它实用。它所包装的,是算法与数据结构的基本功能。作为一个程序员,如果你是做 数据库编程的,大可以不懂汇编语言,如果你是写驱动程序的,大可以不必通晓人工智 能,写编译器的可以不用懂什幺计算机图形学,操作系统内核高手不用精通网站架设, 然而,如果你不懂数据结构与算法的基础知识,不县备数据结构与箅法的基本技能,那 就完全丧失称为一个程序员的资格!市面上讲述算法与数据结构的专着汗牛充栋,俯拾 皆是。相比之下,本书倒并不是以此为核心目标的。但是,可曾有哪位读者看到任何一 The annotated stL Sources I STL源码剖析 本书像本书一样,将红黑树用一张张清晰生动的图解释得如此浅显易懂?所谓一图胜千 言,在教授基本数据结构与算法方面,我想不出还有任何一种方法,能够比幻灯般的图 片更生动更令人印象深刻了。读过此书的每·位读者,我想都会为书中那一幅幅插图所 打动,作者细致严谨的作风,时刻为读者考虑的敬业精神,也许是更值得我们尊敬的东 西。我非常荣幸有机会与侯先生和华中科技大学出版社的周筠女士再次合作,担任了这 本书的繁简转译工作。在术语转译方面,我们基本上保持了与《 Effective c++中文版》 相一致的标准。其中有些术语不完全符合国内的惯译法,下面是个简单的对比表: 英文术语 大陆惯用译法 本书译法 adapter 适配器 配接器 argument 实参(实质参数)引数 by reference传参考传地址 传址 by value 传值 传值 dereference反引用解参考 提领 evaluate 评估计算 评估,核定 Instance 案例,实例 实体 Instantiate 实例化 实体化、具现化 library 库函效库 程序库 range 范围 区间(使用于STL时) resolve 解析 决议 parameter 形参(形式参数)参数 类型 型别 侯先生在一篇影响颇为广泛的STL技术杂文中,将SL的学习境界划分为三个阶 段:会用,明理,能扩展。阅读STL源码是由第层次直贯第二层次,而渐达于第三层 次的一条捷径,当然也是一条满是荆棘之路。如果你是一个勇于征服险峰的程序员,如 果你是一个希望了解 under the hood之奥秘的程序员,那么当你在攀登STL这座瑰丽高 山的时候,这本书会大大地帮助你。我非常热情地向您推荐这本着作。当然,再好的书 籍也只是工具,能不能成功,关键,还在你自己! 孟岩 2002年4月于北京 The annotated stl sources 庖丁解牛·侯捷自序 庖丁解牛 侯捷自序 这本书的写作动机,纯属偶然。 2000年下半年,我开始为计划中的《泛型思维》一书陆续准备并热身。为了 对泛型编程技术以及STL实现技术有更深的体会,以便在讲述整个STL的架构与 应用时更能虎虎生风,我常常深入到STL源码中去刨根究底。2001年2月的某 天,我突然有所感触:既然花了大把精力看过STL源码,写了眉批,做了整理, 何不把它再加一点功夫,形成一个更完善的面貌后出版?对我个人而言,一份批注 详尽的STL源码,价值不菲;如果我从中获益,一定也有许多人能够从中获益。 这样的念头使我极度兴奋。剖析大架构本是侯捷的拿手,这个主题又可以和《泛 型思维》相呼应。于是我便一头栽进去了 我选择 SGI STL作为剖析对象。这份实现版本的可读性极佳,运用极广,被 选为GNUC++的标准程序库,又开放自由运用。愈是细读 SGI STL源码,愈令 我震惊抽象思维层次的落实、泛型编程的奥妙,及其效率考虑的缜密。不仅最为人 广泛运用的各种数据结构( data structures)和算法( algorithms)在ST中有良好 的实现,连内存配置与管理也都重重考虑∫最佳效能。一切的一切,除了实现软件 积木的高度复用性,让各种组件( components)得以灵活搭配运用,更考虑了实用 上的关键议题:效率。 1庄子养生主:“彼节者有间,而刀刃者无厚:以无厚入有间,恢恢乎其于游刃必有余 地矣。”侯捷不让,以此自况 The Annotated stl Sources

...展开详情
试读 127P STL源码剖析简体中文完整版清晰扫描 .pdf
立即下载 低至0.43元/次 身份认证VIP会员低至7折
    一个资源只可评论一次,评论内容不能少于5个字
    Ruo_Xiao 没有目录,骗人。
    2019-05-18
    回复
    anaven 书很好,喜欢看扫描版,没有错别字
    2019-04-16
    回复
    ctrigger 挺好的啊~~~~
    2019-04-08
    回复
    兴趣兴趣 很好的资料,很齐全,谢谢.
    2019-04-02
    回复
    vanturman 没有目录,不够清晰
    2019-02-28
    回复
    ZIZIFEIFEIYUYU 书很好,喜欢看扫描版,没有错别字
    2018-10-26
    回复
    上传资源赚积分,得勋章
    最新推荐
    STL源码剖析简体中文完整版清晰扫描 .pdf 39积分/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页

    试读已结束,剩余107页未读...

    39积分/C币 立即下载 >