迭代器有时又称为游标,是程序设计的软件设计模式,可在容器上遍历的接口,设计人人员无需关心容器的内容。
迭代器是一种对象,它能够用来遍历标准模板库容器中的部分或者全部的元素,每个迭代器对象代表容器中的确定的地址。迭代器修改了常规指针的接口,所谓迭代器是一种概念上的抽象;那些行为上像迭代器的东西都可以叫做迭代器,然而迭代器又很多不同的能力,它可以把抽象容器和通用算法有机的统一起来。
迭代器提供一些基本的操作:*、=等等。这些操作和C/C++操作数组元素的指针接口一致。不同的地方是,迭代器是一个复杂的指针,具有遍历数据结构的能力。其下层机制取决于其所遍历的数据结构。因此,每一种容器型都必须提供自己的迭代器。事实上,每一种容器都可以将迭代器以嵌套的方式定义于内部。因此各种迭代器的接口相同,类型却不同。这直接导出了泛型程序设计的概念:所有操作行为都使用相同的接口,但是类型是不同的。
举例:
lower_bound()返回一个iterator,其指向在[first,last)标记的有序序列中可以插入value,而不会破坏容器顺序的第一个位置,而这个位置标记了一个不小于value的值。该函数为C++ STL内的函数。
例如,有如下序列:
a[i]={12,15,17,19,20,22,23,26,29,35,40,51};
用值21调用lower_bound(),返回一个指向22的iterator。用值22调用lower_bound(),也返回一个指向22的iterator。