迭代器(iterator)简介

含义

\qquad 迭代器的作用是用来访问容器中的元素,可以理解为广义上的指针。类比于指针,我们使用指针访问数组,那么对于数组来说指针就是一种迭代器。

\qquad 但是在C++中有许多复杂的容器,例如vector、string、list、map等,对于这些不同的容器,我们都会使用为其量身打造的迭代器。对比于指针,不同容器的迭代器的功能更多。
\qquad

迭代器的使用

\qquad 对于所有的迭代器,他们的使用方法和指针一样

//例如
vector<typename> a;
vector<typename>::iterator it;
it++; 	//得到指向下一个元素的迭代器
*it;	//解引用获得所指元素的值
it=a.begin();   //开始位置的迭代器
it=a.end();		//束位置的迭代器
for(auto it = a.begin();it!=a.end();it++)
	cout << *it;
	
for(auto i:a)  //此时的i不是迭代器!是具体的值
	cout << i;

,自增操作 i++ 得到指向下一个元素的迭代器,解引用 *i 获得迭代器 i 所指元素的值。
\qquad 大部分的容器type中都会提供成员函数type.begin(),用来获取容器开始位置的迭代器,会提供成员函数type.end(),用来获取容器结束位置的迭代器。
\qquad 注意:迭代器这种类型不可以比较大小!可以赋值,判断是否相等。所以遍历的时候终结条件应该是 it!=end();

其他操作
vector<int>::iterator it=a.begin();

auto n=next(it,-1);		//返回迭代器it的第n个后继迭代器
auto p=prev(it,-1);		//返回迭代器it的第n个前驱迭代器
cout<<*n<<*p;

next(it,n); :返回迭代器第n个后继迭代器,n为负数时则反方向
prev(it,-1);:返回迭代器it的第n个前驱迭代器,n为负数时则反方向

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值