zoukankan      html  css  js  c++  java
  • 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前半部分的元素

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

    代码

    指针也是迭代器

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

  • 相关阅读:
    TP5之自定义分页样式
    使用ajax方法实现form表单的提交
    H5页面唤起手机拨打电话(拨号)
    php开启openssl扩展
    tp5 加载 extend 类库的方法 (有命名空间和没有命名空间的调用)【转】
    PHP 返回13位时间戳
    thinkphp5 view_path 配置,进行模板分离
    html2canvas 截图不完整 图片缺失问题
    PHP把JSON转换成数组
    tp5怎么隐藏默认模块名啊
  • 原文地址:https://www.cnblogs.com/iloverain/p/5749676.html
Copyright © 2011-2022 走看看