zoukankan      html  css  js  c++  java
  • 1.3 迭代器

    A

    1)概述

    要访问顺序容器,关联容器中的元素就要通过迭代器进行。迭代器是个变量,类似于指针

    2)分类

    按照定义方式不同可分为四种(iterator, const_iterator, reverse_iterator, const_reverator_iterator)

    3)定义

    4)例子

    #include<iostream>
    #include<vector>
    using namespace std;
    int main(){
        vector<int>v;
        for(int i=0;i<5;++i)
            v.push_back(i);
        vector<int>::iterator n;
        for(n=v.begin();n!=v.end();++n){
            cout<<*n<<" ";
            *n *=2;  //把每个元素都变为原来的两倍 
        }
        cout<<endl;
        //用反向迭代器遍历容器
        for(vector<int>::reverse_iterator j=v.rbegin();j!=v.rend();++j)  //注意反向 
            cout<<*j<<" "; 
        return 0;
    } 

    ++i比i++要更有效率,因为重载的问题,后置++多生成一个临时对象

    B 迭代器的功能分类

    1)迭代器的功能分类(p是迭代器,i是整型)

    *   :正向迭代器。 ++P,  P++,  *p

    ** :双向迭代器。正向迭代器的全部功能以及 p--,  --p

    ***:随机访问迭代器。

    p+=i;

    p-=i;

    p[i];

    < , > , <= , >= 比较

    2)不同容器上的迭代器得分功能

    C 迭代器的辅助函数

    1)

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

    **  :distance(p,q);计算两个迭代器之间的距离

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

    使用上述函数需要包含头文件algorithm

    2)示例

    //迭代器的辅助函数 
    #include<iostream>
    #include<algorithm>
    #include<list>
    using namespace std;
    int main(){
        int a[5]={1,2,3,4,5};
        list<int>lst(a,a+5);   //数组名即指针,类似迭代器,故此处可用
        list<int>::iterator p = lst.begin();
        advance(p,2); 
        cout<<"1:"<<*p;
        list<int>::iterator q = lst.end();
        q--;
        swap(p,q);
        cout<<endl<<"2:";
        for(p=lst.begin();p!=lst.end();++p)
        cout<<*p<<" "; 
        return 0;
    }
    本博客作为一个入门者的自学记录,欢迎各位同行者不吝赐教。
  • 相关阅读:
    xcode构建webdriverAgent时报错Messaging unqualified id的解决办法
    ubuntu18.0安装RabbitMQ
    python中*的用法
    Jenkins构建项目
    Jenkins安装与配置
    git_仓库
    六、 Shell数组应用
    五、 Shell函数应用
    三、 Shell流程控制
    二、 Shell变量定义
  • 原文地址:https://www.cnblogs.com/by-dxm/p/5462068.html
Copyright © 2011-2022 走看看