码迷,mamicode.com
首页 > 其他好文 > 详细

stl_iterator.h迭代器

时间:2017-04-30 01:09:23      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:cti   迭代器   1.2   意义   需要   nali   随机   访问   深浅拷贝   

六、迭代器:

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

stl_iterator.h迭代器

标签:cti   迭代器   1.2   意义   需要   nali   随机   访问   深浅拷贝   

原文地址:http://www.cnblogs.com/xiaohaige/p/6786540.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!