《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 同济大学软件学院。
Ⅱ 【高分】《STL源码剖析》中的代码
1. 他给的那份代码好像也编译不了吧;不知道你说的想编译看下是什么意思。
其实用别的实现也可以看效果的,比如 stlport之类的。
2. 他所使用的就是 sgi stl ,这个应该这些年不太有变化
3. 你找份新的也可以的;我记得看过几乎没什么变化的。
4. 在侯捷的网站上有;实在不行,在csdn上找找吧,应该也有的。
5. http://www.sgi.com/tech/stl/download.html
直接到这里下载一个V2.X的版本,就可以了。其剖析的也是2.x的版本
Ⅲ 《STL源码剖析》还能看吗C++标准中 STL 只是加入了新的库,而不是重写
当然可以看。学习stl的实现原理的目的,是学习编程范式、技巧、语言的深入理解等过程。且不说c++ 11引入的新特性,只不过是一些语法糖,目前在工业界并没有普及开来。学习语言应该不仅仅限于学习语法本身,更重要的是背后的设计思想。这些思想,不管c++、python还是java等,都是通用的原理。
Ⅳ 学习stl源码剖析前需要先看哪些东西
《STL源码剖析》不是讲怎么样使用STL和STL技巧的,是关于STL核心代码的剖析,是面向有丰富经验的STL程序员来补充和更好的理解STL底层核心机制,初学者看这本书的话基本上是一头雾水,建议先从基础学起,C++标准程序库 和C++stl是比较好的入门且使用的书籍,以后有了一定的STL经验,再去研究STL源码剖析,相信那时候你就会有了另一番对STL的领悟。
Ⅳ 学习stl源码和学习数据结构与算法的区别是什么
自己写了个快排20行,很满意,一看STL的sort几百行长的你开始怀疑人生。
自己实现了一下list,100行!很完美,一看STL的list一千行你又开始怀疑人生。
你看着一堆的template和InputIterator起鸡毛。
Ⅵ <<STL源码剖析>> << C++标准程序库>>
侯捷把STL的学习比喻为三个境界:
第一境界:熟用STL
第二境界:了解泛型技术的内涵与STL的学理乃至实作
第三境界:扩充STL
这三个境界都可以使用 << C++标准程序库>>,但是第三境界推荐使用<<STL源码剖析>>
Ⅶ 《STL源码分析》中如何priority_queue使用greater函数对象
首先查看手册,priority_queue的定义如下:
template<classT, classContainer=std::vector<T>, classCompare=std::less<typenameContainer::value_type>>classpriority_queue;
然后继续看模板的三个参数的说明
—————————以下直接摘抄的—————
Template parameters
T - The type of the stored elements.The behavior is undefined ifTis not the same type asContainer::value_type.(since C++17)
Container - The type of the underlying container to use to store the elements. The container must satisfy the requirements ofSequenceContainer, and its iterators must satisfy the requirements ofLegacyRandomAccessIterator. Additionally, it must provide the following functions with the usual semantics:
front()
push_back()
pop_back()
The standard containersstd::vectorandstd::dequesatisfy these requirements.
Compare - AComparetype providing a strict weak ordering.
—————————以上直接摘抄的—————
故可知,使用priority_queue需要给三个类来实现模板,其中第三个类就是那个比较函数,你问的,为什么要priority_queue<int, vector<int>, greater<int> > q1;已经回答完毕。
另外,可以参考std::less的定义,更深入学习第三个类的含义。已附在引用部分,自行查阅。
std::priority_queuestd::less
PS:第一个那家伙回答的什么东西!我本来是不想回答的。。。看见那家伙胡诌一气,气不过。
Ⅷ STL源码剖析怎么样
STL很庞大,本书很好地萃取出了STL的主要内容(不考虑异常,多线程等相关代码),并加以详略得宜的剖析,让人觉得STL原来如此简单。因为是STL组件本身就有很多类似的地方,所以侯先生的行文大量复用之前文字(有时完全粘贴,有时稍作改动),读起来像读优秀代码一般痛快。
Ⅸ stl源码剖析 为什么要使用仿函数
STL(standard template libary),标准模板库。
这是C++标准的一部分。关于这个库有不少历史可以说,侯捷的《STL源码剖析》讲了不少。STL有好几种不同的实现,微软也有自己的实现。
关于使用,比如你用了下面的语句:
#include <vector>
就是使用了标准模板库里的 vector.
然后你这样声明向量:
vector<int> a; //向量a包含的元素是int型的
vector<double> b; //向量b包含的元素是double型的
你可以查找对应的头文件,它们都是以源码形式出现的,不过里面的符号定义的让人眼花缭乱,还是找书看比较好。
标准模板库包含了数据结构和算法等方面的内容,比较复杂,学习之前要有十足下信心。