迭代器提供一些基本操作符:*、++、==、!=、=。這些操作和c/c++「操作array元素」時的指標介面一致。不同之處在於,迭代器是個所謂的複雜的指標,具有遍歷複雜資料結構的能力。其下層執行機制取決於其所遍歷的資料結構。因此,每一種容器型都必須提供自己的迭代器。事實上每一種容器都將其迭代器以巢狀的方式定義於內部。接下來我簡單的介紹迭代器的簡單應用
vector的正向和反向遍歷方法
我們以列印舉例:
void print_vector(const
vector
& v);
for(int i = 0; i
< v.
size; i++)
cout
<
利用iterator遍歷
vector
::const_iterator it = v.begin();
while(it != v.end())
cout
<這裡需要注意的是不要將const_iterator寫成iterator,因為v傳進來是const的所以調不動iterator
vector
::const_reverse_iterator it = v.rbegin();
while(it != v.rend())
cout
<如上,迭代器在遍歷容器中的應用。
使用next遍歷迭代器
不使用for遍歷可迭代物件,而使用 next 函式並在 中捕獲 stopiteration 異常。比如,下面的例子手動讀取乙個檔案中的所有行 def manual iter with open test.txt r as f try while true line next f print line...
迭代器遍歷
iterator物件稱為迭代器,主要用於遍歷collection 集合中的元素。所有實現了collection介面的集合類都有乙個iterator 方法,用以返回乙個實現了lterator介面的物件,即可以返回乙個迭代器。lterator的結構.iterator僅用於遍歷集合,iterator本身並...
使用迭代器 遍歷檔案的資訊
1.迭代檔案的行 public static ienumerablereadlines string filename static void main 2.使用迭代器和謂詞對檔案中的行進行篩選 public static ienumerablewhere ienumerablesource,pre...