迭代器可被用来访问一个容器类的所包函的全部元素,其行为像一个指针。举一个例子,你可用一个迭代器来实现对vector
容器中所含元素的遍历。有这么几种迭代器如下:
迭代器 | 描述 |
---|---|
input_iterator | 提供读功能的向前移动迭代器,它们可被进行增加(++),比较与解引用(*)。 |
output_iterator | 提供写功能的向前移动迭代器,它们可被进行增加(++),比较与解引用(*)。 |
forward_iterator | 可向前移动的,同时具有读写功能的迭代器。同时具有input和output迭代器的功能,并可对迭代器的值进行储存。 |
bidirectional_iterator | 双向迭代器,同时提供读写功能,同forward迭代器,但可用来进行增加(++)或减少(—)操作。 |
random_iterator | 随机迭代器,提供随机读写功能.是功能最强大的迭代器, 具有双向迭代器的全部功能,同时实现指针般的算术与比较运算。 |
reverse_iterator | 如同随机迭代器或双向迭代器,但其移动是反向的。(Either a random iterator or a bidirectional iterator that moves in reverse direction.)(我不太理解它的行为) |
每种容器类都联系于一种类型的迭代器。每个STL算法的实现使用某一类型的迭代器。举个例子,vector
容器类就有一个random-access
随机迭代器,这也意味着其可以使用随机读写的算法。既然随机迭代器具有全部其它迭代器的特性,这也就是说为其它迭代器设计的算法也可被用在vector
容器上。
如下代码对vector容器对象生成和使用了迭代器:
1 | vector<int> the_vector; |
提示:通过对一个迭代器的解引用操作(*),可以访问到容器所包含的元素。