• C++迭代器(STL迭代器)


    迭代器按照定义方式可以分为以下四种:

    (1)正向迭代器,定义方法如下:

    容器类名::iterator 迭代器名;

    (2)常量正向迭代器,定义方法如下:

    容器类名::const_iterator 迭代器名;

    (3)反向迭代器,定义方法如下:

    容器类名::reverse_iterator 迭代器名;

    (4)常量反向迭代器,定义方法如下:

    容器类名::const_reverse_iterator 迭代器名;

    通过迭代器,我们可以读取它指向的元素,*迭代器名 就表示迭代器所指向的元素,通过非常量迭代器还能修改其指向的元素

    迭代器都可以进行++操作,反向迭代器和正向迭代器的区别在于:

    对正向迭代器进行++操作时,迭代器会指向容器中的后一个元素;

    对反向迭代器进行++操作时,迭代器会指向容器中的前一个元素;

    注意:容器适配器stack,queue,priority_queue 没有迭代器。

    常用的迭代器按功能强弱分为:输入,输出,正向,双向,随机访问 五种。

    (1)正向迭代器

    假设p是一个正向迭代器,则p支持以下操作:

    ++p,p++,*p,两个迭代器可以进行相互赋值,以及==,!=比较

    (2)双向迭代器

    双向迭代器具有正向迭代器的所有功能,并且可以进行 --p 和 p-- 的操作

    (3)随机访问迭代器

    随机访问迭代器具有双向迭代器的所有功能,并且还可以进行以下操作,假设i是一个整型变量或常量:

    p+=i:p往后移动i个元素

    p-=i:p往前移动i个元素

    p+i:返回p后面第i个元素的迭代器

    p-i:返回p前面的第i个元素的迭代器

    p[i]:返回p后面第i个元素的引用

    两个随机访问迭代器还可以进行<,>,<=,>=,- 的操作

    容器                迭代器功能

    vector              随机访问

    deque               随机访问

    list                    双向

    set/multiset        双向

    map/multimap        双向

    stack                 不支持迭代器

    queue               不支持迭代器

    priority_queue      不支持迭代器

    迭代器的辅助函数:

    advance(p,n):使迭代器p向前或向后移动n个元素

    distance(p,q):计算两个迭代器之间的距离,即迭代器p经过多少次++操作后和迭代器q相等,如果调用时p已经指向q的后面,则该函数会陷入死循环

    iter_swap(p,q):用于交换两个迭代器p,q指向的值

  • 相关阅读:
    TCP 连接断连问题剖析
    libtool: link: you must specify an output file
    socket编程bind浮动ip
    epoll或者kqueue的原理是什么?
    推荐 30 款最好的免费项目管理软件
    QNX开发最完整图文教程(官方文档,非官方翻译)
    Android 4.X系列の界面设计中退出Android程序的代码
    APScheduler 定时任务系统
    给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标。
    APSchenuler嵌入Django
  • 原文地址:https://www.cnblogs.com/chen-cai/p/10321559.html
Copyright © 2020-2023  润新知