zoukankan      html  css  js  c++  java
  • iterator_教程中的讲解

    ZC: 在讲 vector的时候讲到的

    1、分类:

    (1)、输入(只读)  只支持一遍算法

    (2)、输出(只写)  只支持一遍算法

    (3)、正向  可对一个值进行多次读写  ==> 相当于 输入迭代器+输出迭代器 的功能组合

    (4)、双向  正向迭代器+向后?  应该既能向前又能向后移动吧(但是一次只能移动一个位置)?

    (5)、随机  双向迭代器+向前/向后跳过任意个位置.任何位置

    2、支持的操作:

      ①双向迭代器

        it++, +it, it--, --it, *it,

        itA=itB, itA==itB, itA!=itB

        ◆ list, set, multiset, map, multimap 支持双向迭代器

      ②随机迭代器

        双向迭代器 的所有操作

        其它的操作:

          it+=i, it-=i, it+i(或it=it+i)(ZC: 这两货不一样吧?), it[i],

          itA<itB, itA<=itB, itA>itB, itA>=itB

        ◆ vector deque(queue,stack) 支持随机访问迭代器

    3、

      ++it  返回 引用  效率高

      it++  返回 值   效率低

    4、

      通过 “iterator == 容器实例.end()” 来判断 迭代器是否指向了 最后一个元素的后面

        ZC: “reverseIterator == 容器实例.rend()”

      4.1、在循环中,用“iterator == 容器实例.end()”来作为 循环是否结束的依据。

      4.2、在 if 中,用“iterator == 容器实例.end()”来判断 返回的 iterator 是否为空。

    5、

      vector<T>::const_iterator
      vector<T>::const_reverse_iterator
      vector<T>::iterator
      vector<T>::reverse_iterator

      5.1、容器中的 insert(...) 和 erase(...) 仅接受 iterator

      5.2、<<Effective STL>>中建议,用 iterator 取代另外3种

    6、

      ZC: 第7讲【39:40】左右,iterator作为参数时,注意 "++it"和"it++"的区别,别用错了。前者是 自增之后再传入函数,后者是先传入函数 等函数运行结束之后再自增。

    7、数组指针 ==> iterator

      类似 “vector<T> vecT(iteratorBegin, iteratorEnd);”这样的构造函数,构造函数的参数 可以传数组指针。数组指针在特定情况下可以当做迭代器使用。

    8、

  • 相关阅读:
    超酷的元素周期表
    TestLink在线Excel用例转换xml
    我也学习JAVA多线程-join
    request.getSession(true/false)的区别
    nginx location配置详细解释
    RestTemplate--解决中文乱码
    扇贝-每日一句
    Hexo博客系列(三)-将Hexo v3.x个人博客发布到GitLab Pages
    C程序的内存分区(节选自黑马训练营day1)
    CodeBlocks更换界面主题界面、汉化及去掉注释及字符串的下划线(汉化包的链接来自本站的BeatificDevin大神)
  • 原文地址:https://www.cnblogs.com/cppskill/p/5408877.html
Copyright © 2011-2022 走看看