stl_iterator.h迭代器

六、迭代器:

6.1、概念:

  6.1.1、iterater和容器其实是分开的。

  6.1.2、非const的iter的是可以修改的、而const的iter是不可修改的,除此之外所有的东西都是一样的。
      两个的设计逻辑上是两个不同的iter,但是又支持互相转换。

  6.1.3、iterator中的拷贝构造是默认的拷贝构造,进行的是浅拷贝,因为我们需要对容器中的元素进行操作。

6.2、分类:

  6.2.1、输入迭代器(InputIterator) 只读

    1、只能够读取(支持 val = *iter(读), 不支持 *iter = val(写))

    2、支持 -> (间接访问)、 ++(自加)。

    3、对比只支持 == 和 != 。

  6.2.2、输出迭代器(OutputIterator) 只写

    1、支持 *iter = val(iter里面元素的深浅拷贝问题)

    2、无间接访问(不能读)、支持 ++ 。

    3、不支持对比操作。

  6.2.3、前向迭代器(ForwardIterator)

    1、单向遍历,

    2、支持 ++、不支持 --、支持输入&输出迭代器功能。

    3、对比只支持 == 和 != 。

  6.2.4、双向迭代器(BidirectionalIterator)

    1、双向遍历

    2、支持++、--、支持输入&输出迭代器功能

    3、对比只支持 == 和 != 。

  6.2.5、随机迭代器(RandomAccessIterator)

    1、支持:++、--、+、-、+=、-=。

    2、比较支持:==、!=、<=、<、>、<=。(这里及以上提到的比较说的是迭代器本身的比较,并不是迭代器指向值得比较)

    3、作用于同一块空间(比如:数组),而以上的是一些不连续的内存空间(无对比意义),所以存在<=、<、>、<=。这些操作符重载。

转载于:https://www.cnblogs.com/xiaohaige/p/6786540.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值