STL 簡介,標準模板庫(轉)
STL 簡介,標準模板庫(轉)[@more@]這篇文章是關於C++語言的一個新的擴充套件——標準模板庫的(Standard Template Library),也叫STL。 當我第一次打算寫一篇關於STL的文章的時候,我不得不承認我當時低估了這個話題的深度和廣度。有很多內容要含蓋,也有很多詳細描述 STL的書。因此我重新考慮了一下我原來的想法。我為什麼要寫這篇文章,又為什麼要投稿呢?這會有什麼用呢?有再來一篇關於STL的文章的必要嗎? 當我翻開Musser and Saini的頁時,我看到了程式設計時代在我面前消融。我能看到深夜消失了, 目標軟體工程出現了。我看到了可維護的程式碼。一年過去了,我使用STL寫的軟體仍然很容易維護。 讓人吃驚的是其他人可以沒有我而維護的很好! 然而,我也記得在一開始的時候很難弄懂那些技術術語。一次,我買了Musser&Saini,每件事都依次出現,但是在那以前我最渴望得到的東西是一些好的例子。 當我開始的時候,作為C++一部分的Stroustrup還沒出來,它覆蓋了STL。 因此我想寫一篇關於一個STL程式設計師的真實生活的文章可能會有用。如果我手上有一些好的例子的話,特別是象這樣的新題目,我會學的更快。 另外一件事是STL應該很好用。因此,理論上說,我們應該可以馬上開始使用STL。 什麼是STL呢?STL就是Standard Template Library,標準模板庫。這可能是一個歷史上最令人興奮的工具的最無聊的術語。從根本上說,STL是一些“容器”的集合,這些“容器”有list,vector,set,map等,STL也是演算法和其他一些元件的集合。這裡的“容器”和演算法的集合指的是世界上很多聰明人很多年的傑作。 STL的目的是標準化元件,這樣你就不用重新開發它們了。你可以僅僅使用這些現成的元件。STL現在是C++的一部分,因此不用額外安裝什麼。它被內建在你的編譯器之內。因為STL的list是一個簡單的容器,所以我打算從它開始介紹STL如何使用。如果你懂得了這個概念,其他的就都沒有問題了。另外,list容器是相當簡單的,我們會看到這一點。 這篇文章中我們將會看到如何定義和初始化一個list,計算它的元素的數量,從一個list裡查詢元素,刪除元素,和一些其他的操作。要作到這些,我們將會討論兩個不同的演算法,STL通用演算法都是可以操作不止一個容器的,而list的成員函式是list容器專有的操作。 這是三類主要的STL元件的簡明綱要。STL容器可以儲存物件,內建物件和類物件。它們會安全的儲存物件,並定義我們能夠操作的這個物件的介面。放在蛋架上的雞蛋不會滾到桌上。它們很安全。因此,在STL容器中的物件也很安全。我知道這個比喻聽起來很老土,但是它很正確。 STL演算法是標準演算法,我們可以把它們應用在那些容器中的物件上。這些演算法都有很著名的執行特性。它們可以給物件排序,刪除它們,給它們記數,比較,找出特殊的物件,把它們合併到另一個容器中,以及執行其他有用的操作。 STL iterator就象是容器中指向物件的指標。STL的演算法使用iterator在容器上進行操作。Iterator設定演算法的邊界 ,容器的長度,和其他一些事情。舉個例子,有些iterator僅讓演算法讀元素,有一些讓演算法寫元素,有一些則兩者都行。 Iterator也決定在容器中處理的方向。 你可以透過呼叫容器的成員函式begin()來得到一個指向一個容器起始位置的iterator。你可以呼叫一個容器的 end() 函式來得到過去的最後一個值(就是處理停在那的那個值)。 這就是STL所有的東西,容器、演算法、和允許演算法工作在容器中的元素上的iterator。 演算法以合適、標準的方法操作物件,並可透過 iterator得到容器精確的長度。一旦做了這些,它們就在也不會“跑出邊界”。 還有一些其他的對這些核心元件型別有功能性增強的元件,例如函式物件。我們將會看到有關這些的例子,現在 ,我們先來看一看STL的list。 --------------------------------------------------------------------------------定義一個list我們可以象這樣來定義一個STL的list: #include #include
- int main (void) {list
- #int main (void) {list
- #int main (void) {#define OK 0 #define INFO 1#define WARNING 2#int return_code;#list
- #int main (void) {list
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #int main (void) {list
- #int main (void) {list
- #include
- #include
- #include
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-944558/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C++學習筆記 — STL標準模板庫C++筆記
- 【知識點】深入淺出STL標準模板庫
- C++標準模板庫(STL)迭代器的原理與實現C++
- 簡單介紹標準庫fmt的基本使用
- [CPP] STL 簡介
- C++標準庫、C++標準模版庫介紹C++
- 類的組合、繼承、模板類、標準庫繼承
- Html 結構標準模板HTML
- 為什麼標準庫的模板變數都是inline的變數inline
- 標準庫 http 包的簡單實用HTTP
- Go 標準庫之 GoRequests 介紹與基本使用Go
- 實驗4 類的組合、繼承、模板類、標準庫繼承
- 實驗四 類的組合、繼承、模板類、標準庫繼承
- 實驗四 類的組合,繼承,模板類,標準庫繼承
- Go 常用標準庫之 fmt 介紹與基本使用Go
- 標準庫之template
- python常用標準庫Python
- Go標準庫ContextGoContext
- C++標準庫C++
- 簡單STL
- 模組轉測標準
- [雪峰磁針石部落格]python標準模組介紹-string:文字常量和模板Python
- HTML 標題簡介HTML
- Python標準庫(待續)Python
- python標準庫目錄Python
- golang標準庫之 fmtGolang
- C++標準庫:chronoC++
- C++標準庫:randomC++random
- C標準庫學習
- PHP 標準庫 SplStack 棧PHP
- [轉]SSH框架簡介框架
- go語言標準庫 - timeGo
- go語言標準庫 - strconvGo
- go語言標準庫 - regexpGo
- go語言標準庫 - logGo
- c/c++ 標準庫 vectorC++
- C 標準庫 – ctype.h
- 標準庫~JSON物件詳解JSON物件
- 標準庫之 random 模組random