STL迭代器簡介
原文地址:http://www.shnenglu.com/lmlf001/archive/2006/04/20/5971.aspx
標準模板庫(The Standard Template Library, STL)定義了五種迭代器。下面的圖表畫出了這幾種:
input output
\ /
forward
|
bidirectional
|
random access
要注意,上面這圖表并不是表明它們之間的繼承關系:而只是描述了迭代器的種類和接口。處于圖表下層的迭代器都是相對于處于圖表上層迭代器的擴張集。例如:forward迭代器不但擁有input和output迭代器的所有功能,還擁有更多的功能。
各個迭代器的功能如下:
迭代器類別
|
說明
|
輸入
|
從容器中讀取元素。輸入迭代器只能一次讀入一個元素向前移動,輸入迭代器只支持一遍算法,同一個輸入迭代器不能兩遍遍歷一個序列
|
輸出
|
向容器中寫入元素。輸出迭代器只能一次一個元素向前移動。輸出迭代器只支持一遍算法,統一輸出迭代器不能兩次遍歷一個序列
|
正向
|
組合輸入迭代器和輸出迭代器的功能,并保留在容器中的位置
|
雙向
|
組合正向迭代器和逆向迭代器的功能,支持多遍算法
|
隨機訪問
|
組合雙向迭代器的功能與直接訪問容器中任何元素的功能,即可向前向后跳過任意個元素
|
迭代器的操作:
每種迭代器均可進行包括表中前一種迭代器可進行的操作。
迭代器操作
|
說明
|
所有迭代器
|
p++
|
后置自增迭代器
|
++p
|
前置自增迭代器
|
輸入迭代器
|
*p
|
復引用迭代器,作為右值
|
p=p1
|
將一個迭代器賦給另一個迭代器
|
p==p1
|
比較迭代器的相等性
|
p!=p1
|
比較迭代器的不等性
|
輸出迭代器
|
*p
|
復引用迭代器,作為左值
|
p=p1
|
將一個迭代器賦給另一個迭代器
|
正向迭代器
|
提供輸入輸出迭代器的所有功能
|
雙向迭代器
|
--p
|
前置自減迭代器
|
p--
|
后置自減迭代器
|
隨機迭代器
|
p+=i
|
將迭代器遞增i位
|
p-=i
|
將迭代器遞減i位
|
p+i
|
在p位加i位后的迭代器
|
p-i
|
在p位減i位后的迭代器
|
p[i]
|
返回p位元素偏離i位的元素引用
|
p<p1
|
如果迭代器p的位置在p1前,返回true,否則返回false
|
p<=p1
|
p的位置在p1的前面或同一位置時返回true,否則返回false
|
p>p1
|
如果迭代器p的位置在p1后,返回true,否則返回false
|
p>=p1
|
p的位置在p1的后面或同一位置時返回true,否則返回false
|
只有順序容器和關聯容器支持迭代器遍歷,各容器支持的迭代器的類別如下:
容器
|
支持的迭代器類別
|
vector
|
隨機訪問
|
deque
|
隨機訪問
|
list
|
雙向
|
set
|
雙向
|
multiset
|
雙向
|
map
|
雙向
|
multimap
|
雙向
|
stack
|
不支持
|
queue
|
不支持
|
priority_queue
|
不支持
|
posted on 2008-11-24 12:32
漂漂 閱讀(285)
評論(0) 編輯 收藏 引用 所屬分類:
STL