stl_iterator.h迭代器

Posted _xiaohaige

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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、作用于同一块空间(比如:数组),而以上的是一些不连续的内存空间(无对比意义),所以存在<=、<、>、<=。这些操作符重载。

以上是关于stl_iterator.h迭代器的主要内容,如果未能解决你的问题,请参考以下文章

什么是迭代器?

迭代器的解释

五 迭代器生成器

STL迭代器相关的输出迭代器

课时10:迭代器迭代器失效分析

C++迭代器 iterator