普通指针也是一种迭代器
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;
}
}