迭代器 iterator

//先复习指针遍历字符串

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<<" ";
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值