• C++之迭代器


    迭代器的概念

    迭代器是用来访问string对象或vector对象的元素的,类似于下标运算和指针。

    其对象是容器中的元素或string对象中的字符;

    使用迭代器可以访问某个元素,迭代器也能从一个元素移动到另外一个元素。

    迭代器的使用

    不同于指针,获取迭代器不是使用取地址符,有迭代器的类型同时拥有返回迭代器的成员;

    比如,这些类型拥有名为begin和end的成员,begin成员负责返回指向第一个元素(或第一个字符)的迭代器,end成员则负责返回指向容器“尾元素的下一个位置”的迭代器;

    如果迭代器为空,则begin和end返回的是同一个迭代器;

    标准容器迭代器的运算符

    和指针类似,也能通过解引用迭代器来获取它所指向的元素,执行解引用的迭代器必须合法并确实指向着某个元素。

    string  s("some String");
    if (s.begin() !=s.end() )  //确保s非空
    {
       auto it=s.begin(); //it 表示s的第一个字符
       *it=toupper(*it);
    }

    迭代器类型

     begin与end运算符

    结合解引用与成员访问操作

     解引用迭代器可以获得迭代器所指向的对象(类似与指针)。例如:若it是Vector对象的迭代器,

    检查其元素是否为空,只需检查it所指向的字符串是否为空;

    (*it).empty();   // it->empty();

    某些对vector对象的操作会使迭代器失效

    但凡是使用了迭代器的循环体,都不要向迭代器所属的容器添加元素;

    迭代器运算

     

    迭代器的算术运算

    可以令迭代器和一个整数值相加(或相减),其返回值是向前(或向后)移动了若干个位置的迭代器。

    auto mid = vi.begin() + vi.size() / 2; //vi.size()=10,则mid指向元素是vi[10]
    if(it<mid) //处理vi前半部分的元素

    使用迭代器运算(二分搜索)

    代码

    指针也是迭代器

    指向数组元素的指针拥有更多功能

  • 相关阅读:
    hutool工具
    lombok
    混入
    postMan
    jsr303常用注解
    网页兼容性
    C/C++ 一点笔记(1)
    VS2010 灵活运用快捷操作功能(新手必看)
    HTML中meta作用
    C/C++ 一点笔记(2)
  • 原文地址:https://www.cnblogs.com/iloverain/p/5749676.html
Copyright © 2020-2023  润新知