迭代器本身是一种抽象概念。即使不是迭代器,若其行为类似迭代器的东西,也可认为是迭代器。迭代器不是通用指针,而是指向数组的指针的概念抽象。通俗来讲,迭代器是一个指示器。迭代器技术能够使程序反复地对STL容器内容进行访问。当参数化类型为C++内部类型时,迭代器是C++的指针。STL定义了5种类型的迭代器,根据使用方式不同而分别命名。每种容器类型支持某种类型的迭代器。通常,迭代器分为输入型迭代器、输出型迭代器、前向型迭代器、双向型迭代器和随机访问型迭代器。
输入型迭代器主要用于为程序中需要的数据源提供输入接口,此处的数据源可以是容器、数据流等。输入迭代器只能够从一个序列中读取数据。迭代器可以被修改、引用并进行比较。
输出型迭代器主要用于输出程序中已经得到的数据结果,此处的数据结果指的是容器、数据流等。输出迭代器只能向一个序列写入数据,此类迭代器可以被修改和引用。
前向型迭代器可以随意访问序列中的元素,许多STL算法需要提供前向迭代器。前向迭代器可以用来读也可以用来写,结合了输入型迭代器和输出型迭代器的功能,并能够保存迭代器的值,以便从其原先位置开始重新遍历。
双向型迭代器既可以用来读也可以用来写,可以被增值和减值,还可以同时进行前向和后向元素的操作。所有STL容器都提供了双向型迭代器功能,以便于数据的写入和读出。
随机访问型迭代器可以通过跳跃的方式访问容器中的任意数据,从而使数据的访问非常灵活。随机访问型迭代器作为功能最强大的迭代器类型,具有双向迭代器的所有功能,能够使用算法和所有的迭代器比较功能。
通俗来讲,迭代器就是指向序列元素的指针,其关键的属性如下。(www.xing528.com)
1)当前被指向的元素,用“∗”或“->”表示。
2)指向下一个元素,迭代器的增量使用运算符“++”。
3)相等,使用运算符“==”。
4)只有随机访问型迭代器可以通过加减整数,取得相对地址。
5)除了输出型迭代器之外,其他类型的迭代器均可获得任意两个迭代器之间的位置(使用distance()函数)。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。