迭代器概述

基本概念

迭代器概念是可用于标识和访问容器元素的一种类型。迭代器按基本用法可分为5种:输入迭代器(InputIterator)、输出迭代器(OutputIterator)、前向迭代器(ForwardIterator)、双向迭代器(BidirectionalIterator)和随机访问迭代器(RandomAccessIterator)。迭代器可以看做是指针的抽象。

输入迭代器(InputIterator)

    InputIterator是一种可以从指向元素读数据的迭代器。这种迭代器只能向前移动,只保证单向算法有效性:一旦一个输入迭代器一直递增,其之前的值的副本可能会失效。

假设i和j是InputIterator,它们支持的操作有以下几种:


输出迭代器(OutputIterator)

OutputIterator与输入迭代器相对,它是一种可以向指向元素写入数据的迭代器(一个实现输出迭代器的典型例子是输出流迭代器std::ostream_iterator)。输出迭代器与输入迭代器一样只能向前移动。

OutputIterator支持的操作如下:


前向迭代器(ForwardIterator)

前向迭代器可以从指向元素中读取数据,与InputIterator不同的是,它支持多通道算法。例如,它保证两个指向同一个元素的迭代器pos1, pos2, pos1 == pos2 返回true,并且对pos1, pos2调用自增操作符之后,二者仍然指向相同元素。即++pos1 == ++pos2
前向迭代器支持的操作与输入迭代器相同

双向迭代器(DirectionalIterator)

双向迭代器是在前向迭代器的基础上增加了反向移动的特性。即增加了i--和--i操作。

随机访问迭代器(RandomAccessIterator)

顾名思义,随机访问器可以快速访问容器中任何位置的元素。其用法类似于指针的算术运算。



上述5种迭代器相互组合构成了我们见到的所有迭代器,如std::vector<T>::iterator、std::istream_iterator等。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值