您好,登錄后才能下訂單哦!
1、為什么要建立STL:程序的復(fù)用性的提升(建立在標(biāo)準(zhǔn)之上)
2、STL的價(jià)值:
1)STL帶來了極具實(shí)用價(jià)值的組件
2)以泛型思想為基礎(chǔ)的”軟件組件分類學(xué)"
3、一句話總結(jié)STL
STL實(shí)現(xiàn)的的是以抽象概念構(gòu)架起的接口標(biāo)準(zhǔn)。
在這個(gè)接口下,任何組件相互獨(dú)立;任何組件通過Iterator膠合;通過adaptor配接;通過functor選擇
policy。
4、STL形成
class:自定義類別
template:將類別參數(shù)化
traits:編程技巧
通過這個(gè)三者,形成STL
5、STL六大組件
1、容器container:裝數(shù)據(jù)的結(jié)構(gòu)——是一種class template 模板類(vector,list,deque,set,map)
2、算法algorithm:是一種function template 模板函數(shù) (sort,search,copy,erase。。。。。)
3、迭代器Iterator:容器和算法之間的膠合劑,所謂的“泛型指針”;是一種將operator*指針操作進(jìn)行重載的class template
4、仿函數(shù)functor:行為類似函數(shù),可作為算法的某種策略;是一種重載operator()的class或者class template
5、配接器adaptor:一種用來修飾容器、仿函數(shù)、迭代器的接口的東西(stack,queue--底層借助deque)
6、配置器allocator:負(fù)責(zé)空間配置和管理,是一個(gè)實(shí)現(xiàn)動態(tài)空間配置、空間管理、空間釋放的class template
6、STL六大組件交互關(guān)系:
Container通過Allocator取得數(shù)據(jù)存儲空間,Algorithm通過Iterator存取Container內(nèi)容,F(xiàn)unctor可以協(xié)助Algorithm而按成不同的策略變話,Adaptor可以修飾或套接Functor
7、STL組態(tài)(SGI)
SGI STL準(zhǔn)備了一個(gè)環(huán)境組態(tài)文件<stl_config.h>,其中定義了許多常量,標(biāo)示某些組件是否成立,所有STL頭文件都會間接或直接包含這個(gè)組態(tài)文件,并一條件式寫法哦,讓pre-processor根據(jù)各個(gè)常量決定取舍哪段程序代碼
8、臨時(shí)對象—應(yīng)用于仿函數(shù)與算法的搭配
臨時(shí)對象:無名對象,非預(yù)期產(chǎn)生的話會造成效率負(fù)擔(dān)
(傳值調(diào)用,都會引發(fā)copy操作,產(chǎn)生臨時(shí)對象)
刻意制造臨時(shí)對象:在類型名后面加(),并可指定初值 eg:Shape(3,5)或int(8),相當(dāng)于調(diào)用相應(yīng)構(gòu)造,但是不指定對象名稱
9、靜態(tài)常量×××數(shù)據(jù)成員(整數(shù)類型不等于int)在class內(nèi)部直接給予初值
static const int/short/long/long long/char xxxx=123;
10、++,- - ,*在iterator中占重要地位,盡量多用前置,少用后置
前置返回值,++i,i的引用
后置返回值,i++,i自增前的const臨時(shí)對象
后置實(shí)現(xiàn)建立在前置基礎(chǔ)上
11、iterator所表示范圍為【first,last),實(shí)際范圍【first,last-1】,last表示最后一個(gè)元素的下個(gè)位置 first!=last常作為循環(huán)條件
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。