stl迭代器的种类

来源:互联网 发布:哥伦比亚假货专卖淘宝 编辑:程序博客网 时间:2024/04/29 19:49

http://blog.csdn.net/touzani/archive/2007/06/08/1643859.aspx

根据迭代器所支持的操作不同,在STL中定义了如下5种迭代器:

l         输入迭代器(input iterator)——用于读取容器中的信息,但不一定能够修改它。

n         输入迭代器iter通过解除引用(即*iter),来读取容器中其所指向元素之值;

n         为了使输入迭代器能够访问容器中的所有元素的值,必须使其支持(前/后缀格式的)++ 操作符;

n         输入迭代器不能保证第二次遍历容器时,顺序不变;也不能保证其递增后,先前指向的值不变。即,基于输入迭代器的任何算法,都应该是单通(single-pass)的,不依赖于前一次遍历时的值,也不依赖于本次遍历中前面的值。

可见输入迭代器是一种单向的只读迭代器,可以递增但是不能递减,而且只能读不能写。适用于单通只读型算法。

l         输出迭代器(output iterator)——用于将信息传输给容器(修改容器中元素的值),但是不能读取。例如,显示器就是只能写不能读的设备,可用输出容器来表示它。也支持解除引用和++操作,也是单通的。所以,输出迭代器适用于单通只写型算法。

l         前向迭代器(forward iterator正向迭代器)——只能使用++操作符来单向遍历容器(不能用--)。与I/O迭代器一样,前向迭代器也支持解除引用与++操作。与I/O迭代器不同的是,前向迭代器是多通的(multi-pass)。即,它总是以同样的顺序来遍历容器,而且迭代器递增后,仍然可以通过解除保存的迭代器引用,来获得同样的值。另外,前向迭代器既可以是读写型的,也可以是只读的。

l         双向迭代器(bidirectional iterator)——可以用++--操作符来双向遍历容器。其他与前向迭代器一样,也支持解除引用、也是多通的、也是可读写或只读的。

l         随机访问迭代器(random access iterator)——可直接访问容器中的任意一个元素的双向迭代器。

原创粉丝点击