c++ primer plus 第16章string 类和标准模板库, 泛型编程----迭代器层次结构
c++ primer plus 第16章string 类和标准模板库, 泛型编程----迭代器层次结构
16.4.3 迭代器层次结构
您可能已经注意到,迭代器类型形成了一个层次结构。正向迭代器具有输入迭代器和输出迭代器的全部功能,同时还有自己的功能:双向迭代器具有正向迭代器的全部功能,同时还有自己的功能;随机访问迭代器具有正向迭代器的全部功能,同时还有自己的功能。表16.4总结了主要的迭代器功能。其中,i为迭代器,n为整数。

根据特定迭代器类型编写的算法可以使用该种迭代器,也可以使用具有所需功能的任何其他迭代器。
所以具有随机访问迭代器的容器可以使用为输入迭代器编写的算法。
为何需要这么多迭代器呢?目的是为了在编写算法尽可能使用要求最低的迭代器,并让它适用于容器的最大区间。这样,通过使用级别最低的输入迭代器,find()函数便可用于任何包含可读取值的容器。而sort()函数由于需要随机访问迭代器,所以只能用于支持这种迭代器的容器。注意,各种迭代器的类型并不是确定的,而只是一种概念性描述。正如前面指出的,每个容器类都定义了一个类级 typedef名称–iterator,因此 vector类的迭代器类型为 vector:: interator。然而,该类的文档将指出,矢量迭代器是随机访问迭代器,它允许使用基于任何迭代器类型的算法,因为随机访问迭代器具有所有迭代器的功能。同样,list类的迭代器类型为list:iterator。STL实现了一个双向链表,它使用双向迭代器,因此不能使用基于随机访问迭代器的算法,但可以使用基于要求较低的迭代器的算法。
1387

被折叠的 条评论
为什么被折叠?



