zc: 在講 vector的時候講到的
1、分類:
(1)、輸入(唯讀) 只支援一遍演算法
(2)、輸出(只寫) 只支援一遍演算法
(3)、正向 可對乙個值進行多次讀寫 ==> 相當於 輸入迭代器+輸出迭代器 的功能組合
(4)、雙向 正向迭代器+向後? 應該既能向前又能向後移動吧(但是一次只能移動乙個位置)?
(5)、隨機 雙向迭代器+向前/向後跳過任意個位置.任何位置
2、支援的操作:
①雙向迭代器
it++, +it, it--, --it, *it,
ita=itb, ita==itb, ita!=itb
◆ list, set, multiset, map, multimap 支援雙向迭代器
②隨機迭代器
雙向迭代器 的所有操作
其它的操作:
it+=i, it-=i, it+i(或it=it+i)(zc: 這兩貨不一樣吧?), it[i],
itaitb, ita>=itb
◆ vector deque(queue,stack) 支援隨機訪問迭代器
3、++it 返回 引用 效率高
it++ 返回 值 效率低
4、通過 「iterator == 容器例項.end()」 來判斷 迭代器是否指向了 最後乙個元素的後面
zc: 「reverseiterator == 容器例項.rend()」
4.1、在迴圈中,用「iterator == 容器例項.end()」來作為 迴圈是否結束的依據。
4.2、在 if 中,用「iterator == 容器例項.end()」來判斷 返回的 iterator 是否為空。
5、vector::const_iterator
vector::const_reverse_iterator
vector::iterator
vector::reverse_iterator
5.1、容器中的 insert(...) 和 erase(...) 僅接受 iterator
5.2、<>中建議,用 iterator 取代另外3種
6、zc: 第7講【39:40】左右,iterator作為引數時,注意 "++it"和"it++"的區別,別用錯了。前者是 自增之後再傳入函式,後者是先傳入函式 等函式執行結束之後再自增。
7、陣列指標 ==> iterator
類似 「vectorvect(iteratorbegin, iteratorend);」這樣的建構函式,建構函式的引數 可以傳陣列指標。陣列指標在特定情況下可以當做迭代器使用。
8、
Java中的 Iterator 迭代器
迭代器是一種設計模式,它是乙個物件,可以遍歷並選擇序列中的物件,而開發人員不需要了解該序列的底層結構 1.iterator 介面中定義的幾個常用方法 hasnext 檢查序列中是否還有元素remove 將迭代器返新返回的元素刪除 2.使用 iterator 迭代器遍歷集合中的元素 public st...
STL中iterator迭代器
1 標頭檔案 所有容器有含有其各自的迭代器型別 iterator types 所以當你使用一般的容器迭代器時,並不需要含入專門的標頭檔案。不過有幾種特別的迭代器,例如逆向迭代器,被定義於中。2 迭代器型別 迭代器共分為五種,分別為 input iterator output iterator for...
php中的iterator迭代器 遍歷
遍歷主要用於遍歷元素的操作,如對陣列中的每乙個元素都要操作,這個情況下我們就可以使用迭代器 inte ce demo 這裡描述了提供給開發者的介面 inte ce demo2 extends demo 這一步是為了隱藏介面的具體實現 class demo3 implements demo 使用者可以...