迭代器

1.迭代器的概念

1)迭代器(iterator)是一種用來索引容器內元素的數據類型spa

2)迭代器不是指針是類模版,表現像指針。它模擬了一些指針的功能, 經過重載指針的一些操做符。本質是封裝了原生指針,至關於指針的一種升級。3d

3)即便是vector,它的迭代器定義以下,也不能說它就是普通指針,vector的迭代器不能相互比較,而指針能夠指針

2.迭代器的種類

根據迭代器所支持的操做,能夠把迭代器分爲5類:對象

1)   輸入迭代器:是隻讀迭代器,能夠讀取容器中的元素blog

2)   輸出迭代器:是隻寫迭代器,能夠寫容器中的元素索引

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

4)   雙向迭代器:前向迭代器的增強,便可向前又可向後移動it

5)   隨機訪問迭代器:有雙向迭代器的全部功能,並且,它還涵蓋了迭代器的全部算術能力,可進行隨機訪問,隨意移動指定的步數io

2.3迭代器支持的運算

1)全部迭代器table

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迭代器失效

相關文章
相關標籤/搜索