• c++ 迭代器iterator



    通过迭代器遍历vector和map的操作见以下链接:
    c++ vector基本知识
    c++ map基本知识


    使用迭代器iterator

    //使用迭代器iterator
    auto iter0 = v.begin();  //返回第一个元素对应的迭代器
    auto iter1 = v.end()  ;  //返回第最后元素下一位置(不是最后一个元素)对应的迭代器, 称为尾后迭代器.
    

    迭代器的操作

    //迭代器的操作
    *iter0          //返回迭代器iter0所指元素的引用
    iter0->mem      //解引用iter0, 并获取该元素的名为mem的成员, 等价于(*iter0).mem
    ++iter0         //令iter0指向容器的下一个元素
    --iter0         //令iter0指向容器的上一个元素
    iter0==iter1    //两个迭代器是否相等, 两个迭代器指向同一个元素则相等
    iter0!=iter1    //两个迭代器是否不相等
    

    const_iterator

    //const_iterator
    vector<int>::iterator       it1; //it1能读写vector<int>的元素
    vector<int>::const_iterator it2; //it2能读vector<int>的元素, 不能写
    
    string::iterator        it3; //it3能读写string对象的字符
    string::const_iterator  it4; //it4能读string对象的字符, 不能写
    
    auto iter2 = v.cbegin(); //返回const_iterator
    auto iter2 = v.cend()  ; //返回const_iterator
    

    解引用和成员访问

    //解引用和成员访问
    (*it).empty(); //解引用it, 调用结果对象的empty成员
    *it.empty()  ; //错误, 先调用it.empty(), 但迭代器没有empty成员
    it->empty()  ; //正确, 等价于(*it).empty(), 即->是把解引用和成员访问两个操作结合在一起
    

    迭代器运算

    //迭代器运算
    iter + n //得到一个新迭代器, 向前移动了n个元素
    iter - n //得到一个新迭代器, 向后移动了n个元素
    
    iter += n //迭代器向前移动了n个元素
    iter -= n //迭代器向后移动了n个元素
    
    iter1 - iter2 //两个迭代器的距离
    >, >=, <, <=  //比较迭代器哪个靠前
    iter1 + iter2 //错误, 注意: 迭代器不能相加
    
  • 相关阅读:
    Istio安装配置及使用
    Istio介绍
    Rancher管理k8s集群
    EFK部署
    常见日志收集方案及相关组件
    Prometheus Pushgateway
    Prometheus监控拓展
    Prometheus PromQL语法
    开始新工作了
    SpringBlade 新系统 运行
  • 原文地址:https://www.cnblogs.com/gaiqingfeng/p/15128164.html
Copyright © 2020-2023  润新知