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 的迭代器,需要包含头文件

后面略

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