導航:首頁 > 源碼編譯 > stl源碼技術如何

stl源碼技術如何

發布時間:2022-05-24 12:08:27

㈠ STL源碼剖析怎麼樣

STL很龐大,本書很好地萃取出了STL的主要內容(不考慮異常,多線程等相關代碼),並加以詳略得宜的剖析,讓人覺得STL原來如此簡單。因為是STL組件本身就有很多類似的地方,所以侯先生的行文大量復用之前文字(有時完全粘貼,有時稍作改動),讀起來像讀優秀代碼一般痛快。

㈡ 有必要讀懂c++ stl源碼嗎

你想深入C++的話,看源碼剖析就很有必要。學習別人寫的東西,為什麼演算法大師能寫出高效的安全穩定的演算法,而我為什麼不能?哪些部分是值得學習的?多去看一些開源代碼很有好處,當然如果看的是些有問題的代碼,就需要你的鑒別能力了。看看代碼有哪些問題,如何改進,如何利用到自己的代碼中,都是有好處的。

但是如果你只想用別人寫的東西,做一些普通的軟體,那可能就未必那麼有用了。你只要功能上實現就可以了,但未必是一個高效的好程序。價值取向不同,需要的知識也不同。

㈢ 《STL源碼剖析》pdf下載在線閱讀,求百度網盤雲資源

《STL源碼剖析》侯捷電子書網盤下載免費在線閱讀

鏈接:

密碼:ignd

書名: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源碼剖析》還能看嗎C++標准中 STL 只是加入了新的庫,而不是重寫

當然可以看。學習stl的實現原理的目的,是學習編程範式、技巧、語言的深入理解等過程。且不說c++ 11引入的新特性,只不過是一些語法糖,目前在工業界並沒有普及開來。學習語言應該不僅僅限於學習語法本身,更重要的是背後的設計思想。這些思想,不管c++、python還是java等,都是通用的原理。

㈤ 什麼是STL

它是由Alexander Stepanov、Meng Lee和David R Musser在惠普實驗室工作時所開發 出來的。現在雖說它主要出現在C++中,但在被引入C++之前該技術就已經存在了很長的 一段時間。 STL的代碼從廣義上講分為三類:algorithm(演算法)、container(容器)和iterator( 迭代器),幾乎所有的代碼都採用了模板類和模版函數的方式,這相比於傳統的由函數 和類組成的庫來說提供了更好的代碼重用機會。在C++標准中,STL被組織為下面的13個 頭文件:、、、、、、、、、、、和。以下筆者就簡單 介紹一下STL各個部分的主要特點。 二、演算法 大家都能取得的一個共識是函數庫對數據類型的選擇對其可重用性起著至關重要的作用 。舉例來說,一個求方根的函數,在使用浮點數作為其參數類型的情況下的可重用性肯 定比使用整型作為它的參數類性要高。而C++通過模板的機制允許推遲對某些類型的選擇 ,直到真正想使用模板或者說對模板進行特化的時候,STL就利用了這一點提供了相當多 的有用演算法。它是在一個有效的框架中完成這些演算法的——你可以將所有的類型劃分為 少數的幾類,然後就可以在模版的參數中使用一種類型替換掉同一種類中的其他類型。 STL提供了大約100個實現演算法的模版函數,比如演算法for_each將為指定序列中的每一個 元素調用指定的函數,stable_sort以你所指定的規則對序列進行穩定性排序等等。這樣 一來,只要我們熟悉了STL之後,許多代碼可以被大大的化簡,只需要通過調用一兩個算 法模板,就可以完成所需要的功能並大大地提升效率。 演算法部分主要由頭文件,和組成。是所 有STL頭文件中最大的一個(盡管它很好理解),它是由一大堆模版函數組成的,可以認 為每個函數在很大程度上都是獨立的,其中常用到的功能范圍涉及到比較、交換、查找 、遍歷操作、復制、修改、移除、反轉、排序、合並等等。體積很小,只包括 幾個在序列上面進行簡單數學運算的模板函數,包括加法和乘法在序列上的一些操作。 中則定義了一些模板類,用以聲明函數對象。 三、容器 在實際的開發過程中,數據結構本身的重要性不會遜於操作於數據結構的演算法的重要性 ,當程序中存在著對時間要求很高的部分時,數據結構的選擇就顯得更加重要。 經典的數據結構數量有限,但是我們常常重復著一些為了實現向量、鏈表等結構而編寫 的代碼,這些代碼都十分相似,只是為了適應不同數據的變化而在細節上有所出入。ST L容器就為我們提供了這樣的方便,它允許我們重復利用已有的實現構造自己的特定類型 下的數據結構,通過設置一些模版類,STL容器對最常用的數據結構提供了支持,這些模 板的參數允許我們指定容器中元素的數據類型,可以將我們許多重復而乏味的工作簡化 。 容器部分主要由頭文件,,,,,和組成 。對於常用的一些容器和容器適配器(可以看作由其它容器實現的容器),可以通過下 表總結一下它們和相應頭文件的對應關系。 數據結構 描述 實現頭文件 向量(vector) 連續存儲的元素 列表(list) 由節點組成的雙向鏈表,每個結點包含著一個元素 雙隊列(deque) 連續存儲的指向不同元素的指針所組成的數組 集合(set) 由節點組成的紅黑樹,每個節點都包含著一個元素,節點之間以某種作用於 元素對的謂詞排列,沒有兩個不同的元素能夠擁有相同的次序 多重集合(multiset) 允許存在兩個次序相等的元素的集合 棧(stack) 後進先出的值的排列 隊列(queue) 先進先出的執的排列 優先隊列(priority_queue) 元素的次序是由作用於所存儲的值對上的某種謂詞決定的的 一種隊列 映射(map) 由{鍵,值}對組成的集合,以某種作用於鍵對上的謂詞排列 多重映射(multimap) 允許鍵對有相等的次序的映射 四、迭代器 下面要說的迭代器從作用上來說是最基本的部分,可是理解起來比前兩者都要費力一些 (至少筆者是這樣)。軟體設計有一個基本原則,所有的問題都可以通過引進一個間接 層來簡化,這種簡化在STL中就是用迭代器來完成的。概括來說,迭代器在STL中用來將 演算法和容器聯系起來,起著一種黏和劑的作用。幾乎STL提供的所有演算法都是通過迭代器 存取元素序列進行工作的,每一個容器都定義了其本身所專有的迭代器,用以存取容器 中的元素。 迭代器部分主要由頭文件,和組成。是一個很小 的頭文件,它包括了貫穿使用在STL中的幾個模板的聲明,中提供了迭代器使 用的許多方法,而對於的描述則十分的困難,它以不同尋常的方式為容器中的 元素分配存儲空間,同時也為某些演算法執行期間產生的臨時對象提供機制,中的 主要部分是模板類allocator,它負責產生所有容器中的默認分配器。 五、對初學者學習STL的一點建議 對於之前不太了解STL的讀者來說,上面的文字只是十分概括地描述了一下STL的框架, 對您理解STL的機制乃至使用STL所起到的幫助微乎甚微,這不光是因為深入STL需要對C ++的高級應用有比較全面的了解,更因為STL的三個部分演算法、容器和迭代器三部分是互 相牽制或者說是緊密結合的。從概念上講最基礎的部分是迭代器,可是直接學習迭代器 會遇到許多抽象枯燥和繁瑣的細節,然而不真正理解迭代器又是無法直接進入另兩部分 的學習的(至少對剖析源碼來說是這樣)。可以說,適應STL處理問題的方法是需要花費 一定的時間的,但是以此為代價,STL取得了一種十分可貴的獨立性,它通過迭代器能在 盡可能少地知道某種數據結構的情況下完成對這一結構的運算,所以下決心鑽研STL的朋 友們千萬不要被一時的困難擊倒。其實STL運用的模式相對統一,只要適應了它,從一個 STL工具到另一個工具,都不會有什麼大的變化。 對於STL的使用,也普遍存在著兩種觀點。第一種認為STL的最大作用在於充當經典的數 據結構和演算法教材,因為它的源代碼涉及了許多具體實現方面的問題。第二種則認為ST L的初衷乃是為了簡化設計,避免重復勞動,提高編程效率,因此應該是「應用至上」的 ,對於源代碼則不必深究。筆者則認為分析源代碼和應用並不矛盾,通過分析源代碼也 能提高我們對其應用的理解,當然根據具體的目的也可以有不同的側重。

㈥ <<STL源碼剖析>> << C++標准程序庫>>

侯捷把STL的學習比喻為三個境界:
第一境界:熟用STL
第二境界:了解泛型技術的內涵與STL的學理乃至實作
第三境界:擴充STL

這三個境界都可以使用 << C++標准程序庫>>,但是第三境界推薦使用<<STL源碼剖析>>

㈦ 學習stl源碼剖析前需要先看哪些東西

《STL源碼剖析》不是講怎麼樣使用STL和STL技巧的,是關於STL核心代碼的剖析,是面向有豐富經驗的STL程序員來補充和更好的理解STL底層核心機制,初學者看這本書的話基本上是一頭霧水,建議先從基礎學起,C++標准程序庫 和C++stl是比較好的入門且使用的書籍,以後有了一定的STL經驗,再去研究STL源碼剖析,相信那時候你就會有了另一番對STL的領悟。

㈧ STL是什麼怎麼使用C++中的STL

STL(standard template libary),標准模板庫。
這是C++標準的一部分。關於這個庫有不少歷史可以說,侯捷的《STL源碼剖析》講了不少。STL有好幾種不同的實現,微軟也有自己的實現。
關於使用,比如你用了下面的語句:
#include <vector>
就是使用了標准模板庫里的 vector.
然後你這樣聲明向量:
vector<int> a; //向量a包含的元素是int型的
vector<double> b; //向量b包含的元素是double型的
你可以查找對應的頭文件,它們都是以源碼形式出現的,不過裡面的符號定義的讓人眼花繚亂,還是找書看比較好。
標准模板庫包含了數據結構和演算法等方面的內容,比較復雜,學習之前要有十足下信心。

㈨ STL是什麼

STL是司太立合金的簡稱

司太立(Stellite)是一種能耐各種類型磨損和腐蝕以及高溫氧化的硬質合金。即通常所說的鈷基合金,司太立合金由美國人Elwood Hayness 於1907年發明。司太立合金是以鈷作為主要成分,含有相當數量的鎳、鉻、鎢和少量的鉬、鈮、鉭、鈦、鑭等合金元素,偶而也還含有鐵的一類合金。根據合金中成分不同,它們可以製成焊絲,粉末用於硬面堆焊,熱噴塗、噴焊等工藝,也可以製成鑄鍛件和粉末冶金件。

司太立合金鑄件適用於核電、石化、電力、電池、玻璃、輕工、食品等諸多領域。具有耐磨、耐蝕、抗氧化和耐高溫特性。常用的產品有閥芯、閥座、軸類、軸套、泵類部件,玻璃、電池模具、噴嘴及切割刀具等。合金類別有:Co基合金鑄件、Ni基合金鑄件、Fe基合金鑄件。司太立粉末冶金製品採用鈷基、鎳基或鐵基合金霧化粉末,經壓制、燒結、精加工製成。主要產品有閥桿、閥芯(球)、閥座、閥圈、密封環、木材鋸齒、軸承泵、軸承球等。

㈩ 初學者可以看得懂《STL源碼剖析》嗎

《STL源碼剖析》不是講怎麼樣使用STL和STL技巧的,是關於STL核心代碼的剖析,是面向有豐富經驗的STL程序員來補充和更好的理解STL底層核心機制,初學者看這本書的話基本上是一頭霧水,建議先從基礎學起,C++標准程序庫 和C++stl是比較好的入門且使用的書籍,以後有了一定的STL經驗,再去研究STL源碼剖析,相信那時候你就會有了另一番對STL的領悟。

閱讀全文

與stl源碼技術如何相關的資料

熱點內容
jtbcphp 瀏覽:337
編程時遇到源代碼未編譯如何處理 瀏覽:431
綠源app怎麼查看綁定系統 瀏覽:357
qq里的壓縮文件怎麼保存 瀏覽:349
傷寒論桂林pdf 瀏覽:684
樹洞app怎麼搜索好友 瀏覽:217
冷庫壓縮機如何注油 瀏覽:641
無線wifi怎麼加密呢 瀏覽:432
linuxjava配置環境變數 瀏覽:702
rust伺服器怎麼下載地圖 瀏覽:831
程序員那麼可愛被誤會的片段 瀏覽:39
好玩免費的伺服器地址 瀏覽:344
vb腳本編譯 瀏覽:18
單片機led顯示數字 瀏覽:379
vim編譯器是什麼 瀏覽:385
ava程序員面試標准 瀏覽:791
安卓原生系統狀態欄編譯美化 瀏覽:64
java線程是什麼意思 瀏覽:710
如何查看伺服器的外網ip地址 瀏覽:721
命令方塊放置方塊 瀏覽:367