JoeChenzzz

导航

迭代器

1.迭代器的概念

1)迭代器(iterator)是一种用来索引容器内元素的数据类型

2)迭代器不是指针是类模版,表现像指针。它模拟了一些指针的功能, 通过重载指针的一些操作符。本质是封装了原生指针,相当于指针的一种升级。

3)即使是vector,它的迭代器定义如下,也不能说它就是普通指针,vector的迭代器不能相互比较,而指针可以

2.迭代器的种类

根据迭代器所支持的操作,可以把迭代器分为5类:

1)   输入迭代器:是只读迭代器,可以读取容器中的元素

2)   输出迭代器:是只写迭代器,可以写容器中的元素

3)   前向迭代器:兼具输入和输出迭代器的能力,但它不支持operator--,只能向前移动

4)   双向迭代器:前向迭代器的加强,即可向前又可向后移动

5)   随机访问迭代器:有双向迭代器的所有功能,而且,它还涵盖了迭代器的所有算术能力,可进行随机访问,随意移动指定的步数

2.3迭代器支持的运算

1)所有迭代器

p++                                                     后置自增
++p                                                     前置自增

2)输入迭代器

*p                                                        解引用运算符,作为右值

p->member等价于(*p).member    箭头运算符,提取对象的某成员
p=p1                                                    赋值
p==p1                                                  比较相等
p!=p1                                                   比较不等

3)输出迭代器

*p                                                        解引用,作为左值
p=p1                                                    赋值

4)  前向迭代器

  支持输入输出迭代器的所有运算

5)双向迭代器
--p                                                       前置自减
p--                                                       后置自减

6)随机迭代器

<,<=,>,>=                              两个迭代器比较相对位置
+,+=,-,-=                                              迭代器和一个整数的加减运算,两个迭代器相减
p[n]                                                      下标运算,返回p偏离n指向的元素

2.4各容器支持的迭代器

vector                    随机

list                         双向

slist         前向           

deque                    随机

stack                     不支持                       

queue                    不支持

heap                      不支持

priority_queue        不支持    

set、multiset           双向                                             

map、multimap       双向

unordered_map、unordered_set、unordered_multimap、unordered_multiset  双向

hashtable      前向                      

2.4迭代器失效

posted on 2019-02-11 20:04  JoeChenzzz  阅读(337)  评论(0编辑  收藏  举报