迭代器是可以遍历一个对象(遍历)容器类用户不必知道容器实现。有许多类(特别是列表和关联的类),迭代器的主要方式,这些类访问元素。
迭代器是最好的可视化作为一个指针到一个给定的元素在容器中,用一组重载操作符提供一套明确的功能:
运算符*迭代器解引用返回迭代器指向的元素是目前。
操作员+ +移动迭代器容器中的下一个元素。大多数的迭代器也提供操作员–移动到前一个元素。
运算符= =运算符!=基本比较运算符确定两个迭代器指向同一个元素。比较两个迭代器指向的价值观,尊重迭代器的第一,然后使用比较运算符。
运算符=分配到一个新的迭代器位置(通常是容器元素的开始或结束)。分配的迭代器指向的元素的值,然后使用第一个顺从的迭代器,assign操作。
每个容器包括使用运算符=四基本成员函数:
begin()返回表示容器中的元素的迭代器的开始。
end()返回表示元刚刚过去的元素的迭代器的结束。
cbegin()返回const iterator(只读)表示容器中的元素的开始。
cend()返回const迭代器表示的元素(只读)刚刚过去的元素的结束。
这似乎不可思议,end()并不指向最后一个元素在列表中,但这样做主要是为了使循环很简单:在元素上迭代可以继续直到达到end()迭代器,然后你知道你做的。
最后,所有的容器都提供(至少)两种类型的迭代器:
集装箱::迭代器提供读/写迭代器
集装箱::const_iterator提供只读的迭代器
让我们看一些例子,看看使用迭代器。
=2=3=橙色香蕉葡萄4 = 5 = 6 =芒果桃子,苹果
注意这里的迭代器,使它容易遍历每个容器中的元素。你不必在意如何地图存储其数据!
结论
迭代器提供简单的方法步骤,通过一个容器类的元素不必了解容器类的实现。当结合STL的算法和容器类的成员函数,迭代器变得更加强大。在下一课中,您会看到使用迭代器插入元素到一个列表的一个例子(不访问它的元素直接提供重载操作符[])。
有一点值得注意:迭代器必须对每一个类的基础上实现的,因为迭代器也必须了解类是如何实现的。因此迭代器都绑定到特定的容器类。