《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型的
你可以查找對應的頭文件,它們都是以源碼形式出現的,不過裡面的符號定義的讓人眼花繚亂,還是找書看比較好。
標准模板庫包含了數據結構和演算法等方面的內容,比較復雜,學習之前要有十足下信心。