//先复习指针遍历字符串
char s[]="hello stl";
char *p;//&s &s[0]
//p是一个指向字符串数组的指针,相当于一个迭代器
for(p=s;*p!='\0';*p++){
//p是一个指针,指向数组的不同位置,*p是元素
cout<<*p<<" ";
}
/
int a[]={10,20,30,40,50};
vector<int> v(a,a+5);
//定义迭代器名为it
vector<int>::iterator it;
it=v.begin();
//迭代器指向首元素
(*it)++;
cout<<*it<<" "<<v[0]<<endl;
//利用迭代器遍历vector
for(it =v.begin();it!=v.end();it++){
cout<<*it<<" ";
}
//下标不能指定部分的stl容器,所以用到迭代器,vector可以使用迭代器
///
正向迭代器
假设p是一个正向迭代器,则p能进行以下操作:++p,p++,*p
俩个正向迭代器可以进行互相赋值 还可以进行==和!=运算符进行比较
双向迭代器
双向迭代器具有正向迭代器的全部功能
双向迭代器p智齿--p和p++ 使得p朝和++p相反的方向移动
随机迭代器
随机迭代器有双向迭代器的全部功能
随机迭代器还可智齿以下操作
p+=i 使得p往后移动i个元素
p-=i 反推得出
p+i返回p后面i个元素的迭代器
p-i反推得出
p[i]返回p后面第i个元素的引用
俩个随机迭代器还可用< >>= <=运算符进行比较
vector 随机
deque 随机
list 双向
set/multiset 双向
map/multimap 双向
//不智齿迭代器
stack
queue
priority_queue
利用迭代器反向遍历vector
vector<int>::reverse_iterator rit;
for(rit =r.begin();rit!=v.rend();rit++){
cout<<*rit<<" ";
}