C++_迭代器

迭代器是连接容器和算法的纽带。
迭代器为数据提供了一种抽象的观点,使写算法的人不必关心各种各样的数据结构和具体细节。
迭代器提供了一个数据访问的标准模型,缓解了要求容器提供一组更广泛的访问操作的压力。

迭代器奉行纯抽象概念:任何东西,只要行为类似迭代器,就是一种迭代器。

STL定义了5中类型的迭代器。分别为:输入、输出、前向、双向和随机存取。
①输入迭代器
此种迭代器主要用于为程序中需要的数据源提供输入接口,此处数据源可以是容器、数据流等。输入迭代器只能够从一个序列中读取数据,此类迭代器可以被修改、引用并进行比较。

②输出迭代器
此种迭代器主要用于输出程序中已经得到的数据结果,此处结果数据指的是容器、数据流等。输出迭代器只能向一个序列写入数据,此类迭代器可以被修改和引用。

③前向迭代器
此类迭代器可以随意访问序列中的元素,许多STL算法函数需要提供前向迭代器。前向迭代器可以用来读也可以用来写,结合了输入和输出迭代器的功能,并能够保存迭代器的值,以便从其原先位置开始重新遍历。

④双向迭代器
此类迭代器既可以用来读也可以用来写,双向迭代器可以被增值和减值,并且可以同时进行前向和后向元素的操作。所有的STL容器都提供了双向迭代器的功能,以有利于数据的写入和读出。

⑤随机存取迭代器
此类迭代器可以通过跳跃的方式访问容器中的任意数据,从而使数据的访问非常灵活。随机存取迭代器作为功能最强大的迭代器类型,具有双向迭代器的所有功能,能够使用算法和所有迭代器比较功能。

迭代器配接器
C++标准程序库提供了多个预先定义的特殊迭代器,即所谓的迭代器配接器。
①逆向迭代器
Reverse迭代器是一种配接器,它能重新定义递增和递减运算,使其行为正好倒置。算法以逆次序来处理元素。所有标准容器都允许使用Reverse迭代器来遍历元素。

②插入型迭代器
将赋值操作转换为安插新值操作。通过迭代器,算法可以执行安插行为而非覆盖行为。

③流迭代器
流迭代器的特殊形式是所谓的stream缓冲区迭代器,用来对stream缓冲区进行直接读取和写入操作。

迭代器辅助函数
①advance()迭代器前进函数
只有随机存取迭代器可以自由的前进和后退,方便地使用偏移量,而该函数使所有类型的迭代器均可以方便地前进和后退。

②distance()距离函数
该函数能够根据两个迭代器传回他们之间的距离。对于随机存取迭代器,距离是常数。对于其他类型迭代器,距离具有线性复杂度。对于非随机存取迭代器使用distance()时,性能和效果并不是很好,应尽量避免使用。

③iter_swap()交换两个迭代器所指内容

猜你喜欢

转载自blog.csdn.net/sss_0916/article/details/83960078