c++複習(十)

第十章 泛化類型
術語:概念
用來界定具備一定功能的數據類型,例如
可以比大小的數據類型:Camparable
具有公有的複製構造函數:Assignable
可以比較大小,具有公有的複製構造函數並可以用”=“賦值的所有數據類型記做Sortable
模型:符合一個概念的數據類型,比如:
int型是Comparable概念的模型
靜態數組類型不是Assignable概念的模型

用概念作爲模板參數名
爲概念賦予一個名稱,並使用該名稱作爲模板參數名
例如,表示insertionSort這壓根一個函數模板的原型
template<class sortable>
void insertionSort(Sortable a[],int n);

STL
standard template library ,定義了一套概念體系,爲泛化程序設計提供了邏輯基礎
STL中的各個類模板,函數模板的參數都是用這個體系中的概念來規定的
使用STL模板時,參數類型既可以是c++標準庫中已有的數據類型,也可以是自定義的類型,只要這些類型是所要求的概念的模型。
**基本組件:**容器,迭代器,函數對象,算法
迭代器是算法和容器的橋樑,將迭代器作爲算法的參數,通過迭代器來訪問容器,而不是把容器作爲算法的參數。
將函數對象作爲算法的參數而不是將函數所執行的運算做爲算法的一部分,使用STL中提供的或者自定義的迭代器和函數對象,配合STL算法,可以組合出各種各樣的功能。

**容器:**容納,包含一組元素的對象
基本容器類模板:
順序容器:array,vector(向量),deque(雙端隊列),forward_list(單鏈表),list(鏈表)
(有序)關聯容器——紅黑樹
set(集合),multiset(多重集合),map(映射),multiset(多重映射)
無序關聯容器:哈系表
unordered_set(無序集合,unordered_multiset(無序多重集合,unordered_map(無序映射),unorder_multimap(無需多重映射)

容器適配器
stack,queue,priority_queue

迭代器:本身就是一個類,裏面重載了各種運算符
提供了順序訪問容器中每個元素的方法
可以使用++運算符來獲得指向下一個元素的迭代器
可以使用*運算符訪問迭代器所指向的元素,如果元素類型是類或者結構體,還可以使用->運算符直接訪問該元素的一個成員;
有些迭代器支持通過–運算符獲得指向上一個元素的迭代器;
迭代器就是泛化的指針,指針具有同樣的特性,因此指針本身就是一種迭代器
使用獨立於STL 的迭代器,需要包含頭文件

後面略

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章