C++ STL簡介 (轉)
STL(Standard Template Library,標準模板庫)是惠普實驗室開發的一系列的統稱。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普實驗室工作時所開發出來的。現在雖說它主要出現在C++中,但在被引入C++之前該技術就已經存在了很長的一段時間。
STL的程式碼從廣義上講分為三類:algorithm(演算法)、container(容器)和iterator(迭代器),幾乎所有的程式碼都採用了模板類和模版的方式,這相比於傳統的由函式和類組成的庫來說提供了更好的程式碼重用機會。在C++標準中,STL被組織為下面的13個頭:、
二、演算法
大家都能取得的一個共識是函式庫對資料型別的選擇對其可重用性起著至關重要的作用。舉例來說,一個求方根的函式,在使用浮點數作為其引數型別的情況下的可重用性肯定比使用整型作為它的引數類性要高。而C++透過模板的機制允許推遲對某些型別的選擇,直到真正想使用模板或者說對模板進行特化的時候,STL就利用了這一點提供了相當多的有用演算法。它是在一個有效的中完成這些演算法的——你可以將所有的型別劃分為少數的幾類,然後就可以在模版的引數中使用一種型別替換掉同一種類中的其他型別。
STL提供了大約100個實現演算法的模版函式,比如演算法for_each將為指定序列中的每一個元素指定的函式,stable_sort以你所指定的規則對序列進行穩定性排序等等。這樣一來,只要我們熟悉了STL之後,許多程式碼可以被大大的化簡,只需要透過呼叫一兩個演算法模板,就可以完成所需要的功能並大大地提升。
演算法部分主要由標頭檔案
三、容器
在實際的開發過程中,資料結構本身的重要性不會遜於操作於資料結構的演算法的重要性,當中存在著對時間要求很高的部分時,資料結構的選擇就顯得更加重要。
經典的資料結構數量有限,但是我們常常重複著一些為了實現向量、連結串列等結構而編寫的程式碼,這些程式碼都十分相似,只是為了適應不同資料的變化而在細節上有所出入。STL容器就為我們提供了這樣的方便,它允許我們重複利用已有的實現構造自己的特定型別下的資料結構,透過設定一些模版類,STL容器對最常用的資料結構提供了支援,這些模板的引數允許我們指定容器中元素的資料型別,可以將我們許多重複而乏味的工作簡化。
容器部分主要由標頭檔案,
- 雙佇列(deque) 連續儲存的指向不同元素的指標所組成的陣列
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-996725/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C++標準庫簡介、與STL的關係【轉】C++
- STL 簡介,標準模板庫(轉)
- [CPP] STL 簡介
- STL 簡介,標準模板庫[1] (轉)
- C++簡介 (轉)C++
- STL之容器(containers) 簡介AI
- c++ STL Algorithm簡單總結備忘C++Go
- C++ STL listC++
- C++ STL stackC++
- C++ STL -- vectorC++
- C++ STL -- listC++
- C++ STL -- HashTableC++
- 【C++ STL】Set用法C++
- C++ 模板與STLC++
- C++ STL deque容器C++
- C++ IO庫簡介C++
- C++ stl容器詳解C++
- C++ STL之迭代器C++
- C++ STL迭代器(iterator)C++
- C++ STL學習——vectorC++
- C++ STL容器總結C++
- C++ STL stack容器——棧C++
- C++ 引用型別簡介C++型別
- c++語言教程——01 c++的簡介C++
- Hook簡介 (轉)Hook
- NFS簡介(轉)NFS
- gcc 簡介(轉)GC
- UNIX簡介(轉)
- PGP 簡介(轉)
- Servlet簡介 (轉)Servlet
- CMM簡介 (轉)
- MapX 簡介 (轉)
- xCBL簡介 (轉)
- WBEM簡介 (轉)
- C++實踐:STL容器reserveC++
- [C++] STL相關面試題C++面試題
- C++ STL學習之stack。C++
- C++ STL list連結串列C++