C++迭代器基础用法
前言
参考自:C++迭代器(STL迭代器)iterator详解 (biancheng.net)
迭代器种类
正向迭代器
1
容器类名::iterator 迭代器名;
常量正向迭代器
1
容器类名::const_iterator 迭代器名;
反向迭代器
1
容器类名::reverse_iterator 迭代器名;
常量反向迭代器
1
容器类名::const_reverse_iterator 迭代器名;
迭代器使用
迭代器类似于指针,可以指向容器中的不同元素并进行修改(常量迭代器无法修改),*迭代器就代表元素本身
实例
1  | 
  | 

功能分类
1) 正向迭代器,支持以下操作:++p,p++,*p。此外,两个正向迭代器可以互相赋值,还可以用==和!=运算符进行比较。
2) 双向迭代器,具有正向迭代器的全部功能。除此之外,若 p 是一个双向迭代器,则--p和p--都是使得 p 朝和++p相反的方向移动。
3) 随机访问迭代器。具有双向迭代器的全部功能。若 p 是一个随机访问迭代器,i 是一个整型变量或常量,则 p 还支持以下操作:
- p+=i:使得 p 往后移动 i 个元素。
 - p-=i:使得 p 往前移动 i 个元素。
 - p+i:返回 p 后面第 i 个元素的迭代器。
 - p-i:返回 p 前面第 i 个元素的迭代器。
 - p[i]:返回 p 后面第 i 个元素的引用。
 
此外,两个随机访问迭代器 p1、p2 还可以用 <、>、<=、>= 运算符进行比较。p1<p2的含义是:p1 经过若干次(至少一次)++操作后,就会等于 p2。其他比较方式的含义与此类似
对于两个随机访问迭代器 p1、p2,表达式p2-p1也是有定义的,其返回值是 p2 所指向元素和 p1 所指向元素的序号之差(也可以说是 p2 和 p1 之间的元素个数加一)
不同容器的迭代器的功能
| 容器或容器适配器 | 迭代器功能 | 
|---|---|
| vector | 随机访问 | 
| deque | 随机访问 | 
| list | 双向 | 
| set / multiset | 双向 | 
| map / multimap | 双向 | 
| stack | 不支持迭代器 | 
| queue | 不支持迭代器 | 
| priority_queue | 不支持迭代器 | 
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 快乐小凳凳!
 评论

