• 迭代器


    1.迭代器的概念

    1)迭代器(iterator)是一种用来索引容器内元素的数据类型

    2)迭代器不是指针是类模版,表现像指针。它模拟了一些指针的功能, 通过重载指针的一些操作符。本质是封装了原生指针,相当于指针的一种升级。

    3)即使是vector,它的迭代器定义如下,也不能说它就是普通指针,vector的迭代器不能相互比较,而指针可以

    2.迭代器的种类

    根据迭代器所支持的操作,可以把迭代器分为5类:

    1)   输入迭代器:是只读迭代器,可以读取容器中的元素

    2)   输出迭代器:是只写迭代器,可以写容器中的元素

    3)   前向迭代器:兼具输入和输出迭代器的能力,但它不支持operator--,只能向前移动

    4)   双向迭代器:前向迭代器的加强,即可向前又可向后移动

    5)   随机访问迭代器:有双向迭代器的所有功能,而且,它还涵盖了迭代器的所有算术能力,可进行随机访问,随意移动指定的步数

    2.3迭代器支持的运算

    1)所有迭代器

    p++                                                     后置自增
    ++p                                                     前置自增

    2)输入迭代器

    *p                                                        解引用运算符,作为右值

    p->member等价于(*p).member    箭头运算符,提取对象的某成员
    p=p1                                                    赋值
    p==p1                                                  比较相等
    p!=p1                                                   比较不等

    3)输出迭代器

    *p                                                        解引用,作为左值
    p=p1                                                    赋值

    4)  前向迭代器

      支持输入输出迭代器的所有运算

    5)双向迭代器
    --p                                                       前置自减
    p--                                                       后置自减

    6)随机迭代器

    <,<=,>,>=                              两个迭代器比较相对位置
    +,+=,-,-=                                              迭代器和一个整数的加减运算,两个迭代器相减
    p[n]                                                      下标运算,返回p偏离n指向的元素

    2.4各容器支持的迭代器

    vector                    随机

    list                         双向

    slist         前向           

    deque                    随机

    stack                     不支持                       

    queue                    不支持

    heap                      不支持

    priority_queue        不支持    

    set、multiset           双向                                             

    map、multimap       双向

    unordered_map、unordered_set、unordered_multimap、unordered_multiset  双向

    hashtable      前向                      

    2.4迭代器失效

  • 相关阅读:
    一些简单的问题
    WebRTC的 windows 7 环境搭建
    HTML常用标签
    参考C#编程规范
    C#窗体调用(转载)
    java中的小知识(不断更行中。。。。。)
    CF1483E Vabank 题解
    CF755G PolandBall and Many Other Balls 题解
    CF1483D Useful Edges 题解
    CF1368F Lamps on a Circle 题解
  • 原文地址:https://www.cnblogs.com/Joezzz/p/10363031.html
Copyright © 2020-2023  润新知