在上一篇文章我們已經(jīng)基本的了解了什么是C++的STL(標(biāo)準(zhǔn)模板庫),在本章中絕大多數(shù)內(nèi)容都是在介紹常用的STL模板的使用以及其一些參數(shù)的介紹,但是請注意,STL由于其設(shè)計之初就容納了大量的程序員思維結(jié)晶,經(jīng)過了無數(shù)次的討論才形成了一個統(tǒng)一的標(biāo)準(zhǔn),他同時擁有大量的內(nèi)容和知識點,如果完全講解內(nèi)容,展開完完全全可以寫出一本500頁的書,本篇還是以數(shù)據(jù)結(jié)構(gòu)為主,因此,這里只是略講,而且還主要是略講與數(shù)據(jù)結(jié)構(gòu)相關(guān)的容器,不是深入講解。
在這里引用本人的一位老師說的話:不學(xué)STL的C++是不完整的C++。
以下是STL中包含的幾大內(nèi)容,在學(xué)習(xí)中重點要學(xué)習(xí)前三點。
1.容器(Container)
是一種數(shù)據(jù)結(jié)構(gòu),也是本章節(jié)提的重點,如list(鏈表),vector(向量數(shù)組),stack(棧),隊列(queue) ,以模板類的方法提供,為了訪問容器中的數(shù)據(jù),可以使用由容器類輸出的迭代器。
2. 迭代器(Iterator)
是一種特殊的指針,它提供了訪問容器中對象的方法,在程序設(shè)計中,它扮演了容器和算法之間的膠合劑,利用迭代器可以快速而安全的對容器內(nèi)容進(jìn)行操作,或是進(jìn)行算法模板的使用。
3. 算法(Algorithm)
(部分書籍稱為泛型算法,generic algorithms),是一類常用的算法模板,既可以對容器進(jìn)行操作,同時其開放性也讓算法類本身可以針對數(shù)組或者是自定義結(jié)構(gòu)體等結(jié)構(gòu)進(jìn)行直接的操作。
4. *仿函數(shù)(Function object)(又稱為函數(shù)對象,function object)
是一種行為類似函數(shù),這樣講可能有些抽象,我們可以理解為一種高級的,重載了()操作符的結(jié)構(gòu)體與類。
5.*迭代適配器(Iterator Adaptor)
是一種用來修飾容器或者仿函數(shù)的接口,它使得得帶適配器使算法能夠以逆向模式,安插模式進(jìn)行工作,甚至還可以與流配合,它對容器起到非常大的輔助作用,同時他還將迭代器進(jìn)行了更高級別的抽象。
6. *空間配制器(allocator)
是負(fù)責(zé)空間的配置與管理,重點就是對容器的空間申請和空間釋放進(jìn)行管理,你可以理解為C的malloc和free函數(shù),C++的new和delete關(guān)鍵字。
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點擊了解:
一點編程也不會寫的:零基礎(chǔ)C語言學(xué)練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進(jìn)階課程
從零到寫出一個爬蟲的Python編程課程
只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競賽課入門課程
手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程