1)迭代器(iterator)是一種用來索引容器內元素的數據類型spa
2)迭代器不是指針是類模版,表現像指針。它模擬了一些指針的功能, 經過重載指針的一些操做符。本質是封裝了原生指針,至關於指針的一種升級。3d
3)即便是vector,它的迭代器定義以下,也不能說它就是普通指針,vector的迭代器不能相互比較,而指針能夠指針
根據迭代器所支持的操做,能夠把迭代器分爲5類:對象
1) 輸入迭代器:是隻讀迭代器,能夠讀取容器中的元素blog
2) 輸出迭代器:是隻寫迭代器,能夠寫容器中的元素索引
3) 前向迭代器:兼具輸入和輸出迭代器的能力,但它不支持operator--,只能向前移動hash
4) 雙向迭代器:前向迭代器的增強,便可向前又可向後移動it
5) 隨機訪問迭代器:有雙向迭代器的全部功能,並且,它還涵蓋了迭代器的全部算術能力,可進行隨機訪問,隨意移動指定的步數io
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指向的元素
vector 隨機
list 雙向
slist 前向
deque 隨機
stack 不支持
queue 不支持
heap 不支持
priority_queue 不支持
set、multiset 雙向
map、multimap 雙向
unordered_map、unordered_set、unordered_multimap、unordered_multiset 雙向
hashtable 前向