侯捷stl源码剖析pdf
㈠ 推荐几个学习C++语言好的网站呢
BBS 水木清华站
一些同学问我,如何学好C++,我没有别的办法给你们,唯一的办法就是读书,读大
量的书,就可以解决。要把C++作为日常语言,而不是一种程序语言,这样就好办了。
有人又要问我,那么我应该读什么书才好?没有时间怎么办?
我只能对你们说,没时间的话,就别学C++了,做你们喜欢做的事。生活中没有
C++,也同样美好。
如果你准备学,一定要学好,那么我开个书单,应该问题不是甚大。
首先肯定要读一读Bjarne Stroustrup的The Design and Evolution of C++,了解
一下这个语言的历史。接下来就可以看别的书了,但要不停地回头看这本书,看到
你不断地学到的新技术是怎么样一点点地被接纳到这个语言中去的。
第一本书因人而异,基础好一些的,可以看Stanley B. Lippman的C++ Primer,这
本书非常地巨大,你打星号的部分可以不要看。基础不太好的,可以看Stanley B.
Lippman的Essential C++,这本书份量要轻得多,不过四个C++的范型都讲了,而
且讲得非常清楚。
第二本应该停止技术层面的东西,静下心来看看Pike和Kernighan的The Practice
of Programming,好好地整理一下,在程序设计中应该有哪些注意的事项。这本
非常薄的booklet,可以说是程序员必读的指南。
第三本书,就应该是Bruce Eckel写的、候捷译的Thinking in C++,这本书每过
半年我就要重读一遍。可以说每一章都是写得发人深省的,这本书让我感觉到了
技术运用的非常高的境界,但是语言非常平实,只要认真地读,即使基础不行,
也一定可以懂。我在教课的时候,就是用这本书(面对的学生是零基础)。
要更上一层的话,就要慢一步,先要把握C++设计习惯的良好。这是Scott
Meyers的Effective C++和More Effective C++带给我们的无尽收益。我More
Effective C++买不起,只好花了10块钱复印装订了一本"线装本",看起来像葵花
宝典(;-))。这两本书是真正的经典,作者对C++的纯熟,使得语言的风格读起来
简直是如饴甘甜,就像他站在对面在讲课。我手中有这两本书的原版CD,如果有兴
趣,可以发E-mail到[email protected]或在饮水思源投条儿给gaobo索要,只要您提供
光盘我就给免费烧。如果你已经深刻地理解了Effective C++和More Effective
C++,那你可以发现,你在众人中已经是鸡群之鹤。可以指导项目运作了,可以编
写一切你想做的程序了,可以指出别人看起来不错的代码的大小问题了。如果你能
一眼看出有人的代码是对应于"条款27"或"条款M6",那你可真是让本人刮目了。
我已经讲了,如果要写程序,EC++和MEC++的境界已经足以使你自如应付,可是如
果你还不满足,想关注一些理论层面的问题,或是想看看实现的代码,你就不应该
错过这几本好极了的书。我是说Herb Sutter的Exceptional C++和More
Exceptional C++,这两本书的难度是非常大的,我对每一条的阅读笔记都是十多
页。特别是泛型程序设计的部分,这两本书旁征博引,极尽深入探讨之能事,每每
看懂一条,都抹汗一次,大感酣畅淋漓;还有侯捷的 STL源码剖析 ,以实际的
例子一点点地讲解一个STL是怎么样实现的,我是刚开始读,不发表评论;而
Stanley B. Lippman,Cfront的实现者之一,执笔写出Inside the C++ Object
Model,我只有一个字,就是基本帅呆了。我从中了解了无数的编译器解释源代码
的细节,以及记忆体分配的细节,呵呵,这些都知道了,我还怕什么呢?最近得到
了另一Cfront实现者、C++标准委员会Koenig的 C++沉思录,看起来非常不错,这
里也推荐给大家,但我也没看完,亦无发言权。
最后最后,你们,未来的C++理论家们,可要记住,Bjarne Stroustrup的The C++
Programming Language无论如何也应该读个四五遍!这是一切C++的书本的源泉。
如果还觉得不够,就向C++标准委员会订购一本C++标准。
一切中国大陆作者的书,一概不要看(包括我的)。一切VC++或讲特定的编译器的
书,一概不要看。如果需要补C语言的课,买一本非常小的K&R的The C
Programming Language足矣,其它的书一概不要看。不要先学C,再学C++,而要直
接学C++。你不是先学古文,再学白话的,对不对?所以相信我,直接来更容易。
以上文字,皆为原创,本人愿意为每个字负责。
1、《Effective STL》
订购:
作者:Scott Meyers
出版社:中国电力出版社
一开始欺负这本书比较薄,想快点看完,但不久就发现自己已经翻不动了。直
到看完最后一个字,才发现一个基本的事实:薄的不是这本书,而是自己的见识。
有关STL的书也读了不少,正如读《Effective C++》以前,有关C++的书也读了
不少。Meyers的书总是给人一种脱胎换骨的提升感觉,他总能在大家以为老生常谈
的地方挖出意想不到的新意,并指出一些一般人习以为常的东西其实存在种种危机,
或是在一些看来完全等价的选择中,为特定的场合选择最有效的(Most
Effective)那一种。而且他的切入口总是让人看得懂的(不像Stroustrup的书,
第一句话就要琢磨半天),但是他总是会选择几个拓展点,并把它们分析得淋漓尽
致,这时候就需要一段代码一段代码甚至是语句粒度地阅读了——当然,最后总是
看得懂,这和读者的阅读程度总是正比,这会给人极大的成就感。可以说,在STL
实践的书籍,无书可出其右(当然在STL实作方面,我还是要向大家推荐侯捷的
《STL源码剖析》)。
读完这本书后,和Pascal就产生明显的距离感了。这里我仍然要说:请热爱
Delphi!我还是更愿意写“var s:set of char;”而不是
“set , allocator > s”,;-)。
2、《Modern C++ Design》
订购(中文):
订购(影印):
作者:Andrei Alexandrescu
译者:侯捷、于春景
出版社:华中科技大学出版社(中文)
中国电力出版社(影印)
读完这本书的第一页,我就知道自己放不下它了,但我也知道,我的苦难经历
又要多上一笔了。用C++实作设计模式,已经是骨灰级的难度,但这本书明显还在讲
一个template的对象模型的问题,这在我读《Inside the C++ Object Model》时是
屡攻不下的难点。不过,出乎意料的是这本书居然使我具有一些概念了,而且动手写
出了一个SmartPointer。
这本书我还远不能说我读懂了,但是确乎是读完了。如果你还没有读过对象模型
和设计模式的书,我认为需要读一读。否则,直接看这本书根本就是受罪。最近,有
一些朋友也注意到设计模式的重要性了,可能从明年起我在《电脑报》上要发表一些
文章,届时请朋友们指教吧。
--
㈡ C++ STL有哪些经典书籍
经典书籍比较多,其中最经典的就是《C++标准程序库:自修教程与参考手册》。
㈢ 关于台湾技术作家侯捷老师的书籍
译着作品 《无责任书评一、二、三》、 《深入浅出MFC》、 《多型与虚拟》、 《Word排版艺术》 《STL源码剖析》 翻译 《Inside the C++ Object Model》 《Inside Visual C++》 《Windows 95 System Programming Secrets》 《System Programming for Windows 95》 《Essential COM》、《ActiveX controls Inside Out》 《Multithreading Applications in Win32》 《The Java Programming Language, 4/e》 《Refactoring: Improving The Design of Existing Code》 《C++ Coding Standards: 101 Rules, Guidelines, and Best Practices》 《Refactoring to Patterns》 《C++ Primer, 4/e 》 《The Art of C++》 《The Art of Java》 《Exceptional C++》 《C++ Templates: The Complete Guide》 《Practical Java Programming Language Guide》 《Modern C++ Design》 《The C++ Standard Library: A Tutorial and Reference》
麻烦采纳,谢谢!
㈣ c++ stl里的向量vector非常好用,那么它是怎么实现的呢
这个要去翻源码了,STL里的代码说实话,真的看不太懂。
如果不是太纠结于具体细节,可以简单讲讲基本的实现思路,大致如下:
vector从功能上来讲,属于顺序存储容器,所以底层实现一般基于数组。
vector使用模板元编程技术实现,具体一点就是编译器根据使用时指定的实际类型在编译时执行模板特化,编译出对应的代码。也就是说vector<int> v1; vector<double>v2;它们各对应一个特化版本的代码。这提高了代码的抽象级别,但是对带来了代码膨胀的问题。
vector的重要特性之一就是实现了数组的动态递增。简单来说就是容器内部记录当前的足最大容量和使用量。当添加元素的时候,如果容器类发现当前的容量已耗尽,容器类会自动地重新分配一个更大容量的数组,把当前的所有元素过去,然后释放掉旧的数组,从而实现动态自增,这一切对使用者来说完全透明。
vector提供迭代器来提供统一的遍历访问接口,方便与STL中的其它组件进行交互。
这其中会有很多的细节,比如:
1. 是否允许vector在必要时缩小自身容量?
2. vector容量耗尽后的递增量是多少?
3. 是否应该提供线程安全容器?
有些东西可能真的需要去翻源码去看才能搞明白。或者可以参考侯捷的《STL源码剖析》。其实vector本身的实现并不会太复杂,它的实现思路也很简单,但是设计层面的一些取舍就需要经过仔细考量了。一般来说,STL是一个足够坚实的后盾,我们会频繁地使用它,以构建健壮高效的软件。能够理解STL里的一些设计思想和实现方式,对提高我们的编程思维和编程能力会所帮助。
㈤ 《STL源码剖析》pdf下载在线阅读,求百度网盘云资源
《STL源码剖析》侯捷电子书网盘下载免费在线阅读
链接:
书名:STL源码剖析
作者名:侯捷
豆瓣评分:8.7
出版社:华中科技大学出版社
出版年份:2002-6
页数:493
内容介绍:
学习编程的人都知道,阅读、剖析名家代码乃是提高水平的捷径。源码之前,了无秘密。大师们的缜密思维、经验结晶、技术思路、独到风格,都原原本本体现在源码之中。这本书所呈现的源码,使读者看到vector的实现、list的实现、heap的实现、deque的实现、Red Black tree的实现、hash table的实现、set/map的实现;看到各种算法(排序、查找、排列组合、数据移动与复制技术)的实现;甚至还能够看到底层的memory pool和高阶抽象的traits机制的实现。
作者介绍:
侯捷,出生于1961年09月28日,台南县柳营乡人,南京大学客座教授。第一次在大陆大学授课: 南京大学软件学院 and 同济大学软件学院。
㈥ 怎么查看C++库函数的源码
如果你想看stl里面的源码可以去SGI 下载源代码,Download STL source code
去这个网站下载源码,sgi版本的stl代码一般来说可读性比较好,我正在看。
sort函数的代码在stl_algo.h文件里。侯捷有本书叫做《stl源码剖析》
如果是vs2008或者2010可以在Microsoft Visual Studio 10.0\VC\crt\src查看
另外还有本书叫做《c标准库》但是现在好像绝版了。
也可以去这个找:在glibc库里,可去其官方网站下载(最新是2。7的),然后查找一下你要的函数。
㈦ 求程序员入门书籍,我是学C++的,想考个初级程序员
下面是我根据别人的提示和自己的参考总结出的几个阶段的书籍,希望对你有帮助!!
第一阶段:
1::H.M.Deitel和P.J.Deitel的《 C++ How to Program 》(C++大学教程)
2:: 钱能的《C++程序设计教程》
3::Stanley B.lippman着 侯捷 译的《essential c++》
4::Stanley B.Lippman,Josee LaJoie,Barbara E.Moo的《c++ primer》
5::Bjarne Stroustrup的《the c++ programming language》
第二阶段:
1::Scott Meyers的《effective c++》
2::Herb Sutter的《exceptional c++》
3::Scott Meyers的《more effective c++》
4::Herb Sutter的《more exceptional c++》
第三阶段:
1::Stanley B.lippman的《insied the c++ object model》(深度探索C++ 对象模型)
2::Bjarne Stroustrup的《The design and evolution of c++》(C++的设 计与演化)
3::tephen C. Dewhurst的《C++ Gotchas: Avoiding Common Problems in Coding and Design》(C++程序设计陷阱)
第四阶段:
1:: Nicolai M.Josuttis的《the c++ standard library》(C++标准程序库 —自修教程与参考手册)
2::Scott Meyers的《effective stl》
3::Matthew H. Austern的《generic programming and the stl》(泛型编 程与STL)
4::侯捷的 《stl源码剖析》
第五阶段:
1::Herb Sutter的《exeptional c++ style》
2::《c++ template》
3::Andrei Alexandrescu的《modern c++ design》
第六阶段
1::《C++ 输入输出流及本地化》《C++ Network Programming》《大规模C++程序设计》
2::Barbara E.Moo和Andrew Koenig的《Ruminations On C++》(C++ 沉思录)
其他的:
Stanley B. Lippman,《Inside The C++ Object Model》影印版、中文版《深度探索C++对象模型》
Elements of Reusable Object-Oriented software》影印版、中文版《设计模式:可复用面向对象软件的基础》
John Lakos的着作《Large-Scale C++ Software Design》(《大规模C++程序设计》
Andrew Koenig和Barbara Moo在《Accelerated C++: Practical Programming by Example》《Ruminations on C++》
Bruce Eckel,《C++编程思想》
windows编程系列:
Charles Petzold 的 《Programming Windows》(Windows程序设计)
Jeffrey Richter 的《》(Windows核心编程)和《Advanced Windows》(Windows 高级编程指南)
数据结构和算法
1::清华教授严蔚敏和广东工业大学教授吴伟民的《数据结构(C语言版)》
2::清华教授殷人昆的《数据结构(用面向对象方法与C++描述)》
3::经典书籍:Mark Allen Weiss的《Data Structures and Algorithm Analysis in C》(数据结构与算法分析--C语言描述)和《Data Structures and Algorithm Analysis in C++》(数据结构与算法分析--C++语言描述)
4::王晓东的《算法设计与分析》
5::M.H.Alsuwaiyel(沙特)的 《Algorithms Design Techniques and Analysis》(算法设计技巧与分析)
6::经典:Thomas H.Cormen, Charles E.Leiserson的《Introction to Algorithms》(算法导论)