stl迭代器的种类

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 )——可直接访问容器中的任意一个元素的双向迭代器。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值