標(biāo)準(zhǔn)模板庫(stl)介紹

標(biāo)準(zhǔn)模板庫(stl)介紹

ID:15036792

大?。?31.50 KB

頁數(shù):29頁

時(shí)間:2018-08-01

標(biāo)準(zhǔn)模板庫(stl)介紹_第1頁
標(biāo)準(zhǔn)模板庫(stl)介紹_第2頁
標(biāo)準(zhǔn)模板庫(stl)介紹_第3頁
標(biāo)準(zhǔn)模板庫(stl)介紹_第4頁
標(biāo)準(zhǔn)模板庫(stl)介紹_第5頁
資源描述:

《標(biāo)準(zhǔn)模板庫(stl)介紹》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、標(biāo)準(zhǔn)模板庫(STL)介紹(上)作者:winter作者:ScottField本文以List容器為例子,介紹了STL的基本內(nèi)容,從容器到迭代器,再到普通函數(shù),而且例子豐富,通俗易懂。不失為STL的入門文章,新手不容錯(cuò)過!???這篇文章是關(guān)于C++語言的一個(gè)新的擴(kuò)展——標(biāo)準(zhǔn)模板庫的(StandardTemplateLibrary),也叫STL。???當(dāng)我第一次打算寫一篇關(guān)于STL的文章的時(shí)候,我不得不承認(rèn)我當(dāng)時(shí)低估了這個(gè)話題的深度和廣度。有很多內(nèi)容要含蓋,也有很多詳細(xì)描述STL的書。因此我重新考慮了一下我原來的想法。我為

2、什么要寫這篇文章,又為什么要投稿呢?這會(huì)有什麼用呢?有再來一篇關(guān)于STL的文章的必要嗎????當(dāng)我翻開MusserandSaini的頁時(shí),我看到了編程時(shí)代在我面前消融。我能看到深夜消失了,目標(biāo)軟件工程出現(xiàn)了。我看到了可維護(hù)的代碼。一年過去了,我使用STL寫的軟件仍然很容易維護(hù)。讓人吃驚的是其他人可以沒有我而維護(hù)的很好!???然而,我也記得在一開始的時(shí)候很難弄懂那些技術(shù)術(shù)語。一次,我買了Musser&Saini,每件事都依次出現(xiàn),但是在那以前我最渴望得到的東西是一些好的例子。???當(dāng)我開始的時(shí)候,作為C++一部分的S

3、troustrup還沒出來,它覆蓋了STL。???因此我想寫一篇關(guān)于一個(gè)STL程序員的真實(shí)生活的文章可能會(huì)有用。如果我手上有一些好的例子的話,特別是象這樣的新題目,我會(huì)學(xué)的更快。???另外一件事是STL應(yīng)該很好用。因此,理論上說,我們應(yīng)該可以馬上開始使用STL。???什麼是STL呢?STL就是StandardTemplateLibrary,標(biāo)準(zhǔn)模板庫。這可能是一個(gè)歷史上最令人興奮的工具的最無聊的術(shù)語。從根本上說,STL是一些“容器”的集合,這些“容器”有l(wèi)ist,vector,set,map等,STL也是算法和其他

4、一些組件的集合。這里的“容器”和算法的集合指的是世界上很多聰明人很多年的杰作。???STL的目的是標(biāo)準(zhǔn)化組件,這樣你就不用重新開發(fā)它們了。你可以僅僅使用這些現(xiàn)成的組件。STL現(xiàn)在是C++的一部分,因此不用額外安裝什麼。它被內(nèi)建在你的編譯器之內(nèi)。因?yàn)镾TL的list是一個(gè)簡單的容器,所以我打算從它開始介紹STL如何使用。如果你懂得了這個(gè)概念,其他的就都沒有問題了。另外,list容器是相當(dāng)簡單的,我們會(huì)看到這一點(diǎn)。???這篇文章中我們將會(huì)看到如何定義和初始化一個(gè)list,計(jì)算它的元素的數(shù)量,從一個(gè)list里查找元素,刪

5、除元素,和一些其他的操作。要作到這些,我們將會(huì)討論兩個(gè)不同的算法,STL通用算法都是可以操作不止一個(gè)容器的,而list的成員函數(shù)是list容器專有的操作。???這是三類主要的STL組件的簡明綱要。STL容器可以保存對象,內(nèi)建對象和類對象。它們會(huì)安全的保存對象,并定義我們能夠操作的這個(gè)對象的接口。放在蛋架上的雞蛋不會(huì)滾到桌上。它們很安全。因此,在STL容器中的對象也很安全。我知道這個(gè)比喻聽起來很老土,但是它很正確。???STL算法是標(biāo)準(zhǔn)算法,我們可以把它們應(yīng)用在那些容器中的對象上。這些算法都有很著名的執(zhí)行特性。它們可

6、以給對象排序,刪除它們,給它們記數(shù),比較,找出特殊的對象,把它們合并到另一個(gè)容器中,以及執(zhí)行其他有用的操作。???STLiterator就象是容器中指向?qū)ο蟮闹羔?。STL的算法使用iterator在容器上進(jìn)行操作。Iterator設(shè)置算法的邊界,容器的長度,和其他一些事情。舉個(gè)例子,有些iterator僅讓算法讀元素,有一些讓算法寫元素,有一些則兩者都行。Iterator也決定在容器中處理的方向。????你可以通過調(diào)用容器的成員函數(shù)begin()來得到一個(gè)指向一個(gè)容器起始位置的iterator。你可以調(diào)用一個(gè)容器的

7、end()函數(shù)來得到過去的最后一個(gè)值(就是處理停在那的那個(gè)值)。???這就是STL所有的東西,容器、算法、和允許算法工作在容器中的元素上的iterator。算法以合適、標(biāo)準(zhǔn)的方法操作對象,并可通過iterator得到容器精確的長度。一旦做了這些,它們就在也不會(huì)“跑出邊界”。還有一些其他的對這些核心組件類型有功能性增強(qiáng)的組件,例如函數(shù)對象。我們將會(huì)看到有關(guān)這些的例子,現(xiàn)在,我們先來看一看STL的list。定義一個(gè)list我們可以象這樣來定義一個(gè)STL的list:?#include#include

8、st>intmain(void){?listMilkshakes;return0;}???這就行了,你已經(jīng)定義了一個(gè)list。簡單嗎?listMilkshakes這句是你聲明了list模板類的一個(gè)實(shí)例,然后就是實(shí)例化這個(gè)類的一個(gè)對象。但是我們別急著做這個(gè)。在這一步其實(shí)你只需要知道你定義了一個(gè)字符串的list。你

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。