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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- STL 簡介,標準模板庫[1] (轉)
- 標準模板庫STL (轉)
- 標準模板庫介紹(轉)
- C++標準庫簡介、與STL的關係【轉】C++
- 標準模板庫(STL)使用入門(下)
- 標準模板庫(STL)使用入門(上)
- 精通標準模板庫STL的向量Vector用法
- C++學習筆記 — STL標準模板庫C++筆記
- C++標準模板庫(STL)迭代器的原理與實現C++
- CUJ:高效使用標準庫:STL中的unary predicate (轉)
- 路由器標準簡介(轉)路由器
- C++ STL簡介 (轉)C++
- Python 2.* 標準庫簡介Python
- python:模組1——標準庫簡介Python
- STL標準模組庫:容器string模組
- C++標準模板庫------容器C++
- c++標準程式庫:STL容器之mapC++
- 簡單介紹標準庫fmt的基本使用
- [CPP] STL 簡介
- CUJ:標準庫:標準庫中的搜尋演算法 (轉)演算法
- C++標準庫標頭檔案介紹C++
- Html 結構標準模板HTML
- C++入門學習——標準模板庫之vectorC++
- STL之容器(containers) 簡介AI
- Python標準庫系列之模組介紹Python
- 檔案系統層次標準(FHS)簡介
- 3GPP簡介及標準查詢指南
- 標準庫 http 包的簡單實用HTTP
- python 標準庫和第3方庫的介紹Python
- CUJ:標準庫:bitset和bit vector (轉)
- Go 標準庫之 GoRequests 介紹與基本使用Go
- C++ 模板與STLC++
- C 標準庫 -
- ORACLE資料庫簡介(轉)Oracle資料庫
- CMake 簡介和 CMake 模板
- 為什麼標準庫的模板變數都是inline的變數inline
- CUJ:標準庫:容納指標的容器 (轉)指標
- Go 常用標準庫之 fmt 介紹與基本使用Go