iterator 教程中的講解

2022-09-02 08:42:11 字數 1293 閱讀 9391

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 使用者可以...