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