迭代器理解(以vector迭代器举例)

简介: 迭代器理解(以vector迭代器举例)

普通指针也是一种迭代器


   int  arr[5]={1,2,3,4,5};

   int *p=arr;

   for(int i=0;i<5;i++

   {

   //cout<<arr[i];

   cout<<*(p++);

   vector<int> v;   //声明一个vector的容器,头文件<vector>


一,添加数据

 


     v.push_back(10);


二,容器遍历

      每个容器都有自己专属的迭代器

第一种:


   vector<int>::iterator  itbegin=v.begin();//起始迭代器

   vector<int>::iterator  itend=v.end()//结束迭代器(指向尾地址的下一位)

   while(itbegin!=itend)

    {cout<<*(itbegin++)<<endl;}


第二种:


   for(vector<int>::iterator  it=v.begin();it!=v.end();it++)

      {cout<<*it<<endl;}


第三种:

利用系统提供的算法;for_each


   void   myprint(int val)

   {

   cout<<val<<endl;

   }

   for_each(v.begin(),v.end(),myprint)  //myprint为一个回调函数(写一个输出就够了)

    //头文件<algorithm>


三,理解迭代器


   class Person

   {  public:

              string  name;

               int     age;

   };

   for(vector<Person>::iterator  it=v.begin();it!=end();it++)

   {   //*it---------Person     //类比:Person    *it;

        cout<<  (*it).name; //Person(*it)不为指针类型}

 

   for(vector<Person*>::iterator  it=v.begin();it!=end();it++)

   {   //*it---------Person*    //类比:Person **it;

        cout<<  (*it)->name; //Person*(*it)为指针类型}


四,双层嵌套


   vector<vector<int>> v;

   vector<int> v1;

   vector<int> v2;

   vector<int> v3;

   v.push_back(v1);

   v.push_back(v2);

   v.push_back(v3);

   for(vector<vector<int>>::iterator  it=v.begin();it!=v.end();it++)

   {   //  *t------vector<int>

        for(vector<int>::iterator  vit=(*it).begin();vit!=(*it).end();vit++)

               {  //  *vit------int

                    cout<<*vit<<endl;

                }

   }


 


目录
相关文章
|
算法 Java C++
27.【C/C++ 最全vector数组的用法 (详解)】(一)
27.【C/C++ 最全vector数组的用法 (详解)】
283 0
|
5月前
|
编译器 C语言 C++
C++ STL中list迭代器的实现
C++ STL中list迭代器的实现
C++ STL中list迭代器的实现
|
5月前
|
C++ 容器
【c++】优先级队列|反向迭代器(vector|list)
【c++】优先级队列|反向迭代器(vector|list)
38 0
|
6月前
|
存储 编译器 C++
【C++/STL】list(常见接口、模拟实现、反向迭代器、)
【C++/STL】list(常见接口、模拟实现、反向迭代器、)
47 0
|
6月前
|
算法 C++ 容器
【C++/STL】vector(常见接口、模拟实现、迭代器失效)
【C++/STL】vector(常见接口、模拟实现、迭代器失效)
56 0
|
6月前
|
开发者
迭代器(Iterator)遍历的两种方法(for和while)
迭代器(Iterator)遍历的两种方法(for和while)
|
6月前
|
C++
【STL】:反向迭代器
【STL】:反向迭代器
47 0
|
编译器 C语言 C++
C++实践模拟(vector & list,反向迭代器)
C++实践模拟(vector & list,反向迭代器)
67 0
【C++STL】list的反向迭代器
【C++STL】list的反向迭代器
72 0
|
C++ 容器
C++【STL】之反向迭代器
C++ STL 反向迭代器设计思想和模拟实现详细讲解,干货满满!
132 0
C++【STL】之反向迭代器