演算法 日更 第三十八期 迭代器是什麼?

2022-07-12 11:12:09 字數 1074 閱讀 6855

▎寫在前面

之前一直聽別人說用什麼迭代器之類的話,認為很高深,今天看了看,感覺也不是很高深。

其實和指標差不多。

▎迭代器

☞『定義』

迭代器(iterator)是一種物件,它能夠用來遍歷標準模板庫容器中的部分或全部元素,每個迭代器物件代表容器中的確定的位址。迭代器修改了常規指標的介面,所謂迭代器是一種概念上的抽象:那些行為上像迭代器的東西都可以叫做迭代器。然而迭代器有很多不同的能力,它可以把抽象容器和通用演算法有機的統一起來。

『迭代器』

我們往往會用到容器,什麼容器呢?鍋碗瓢盆、陣列、vector、queue之類的都是。

對於這種東西,我們往往要執行一些操作,比如說查詢元素之類的,迭代器就是專門用來訪問容器的一種資料型別。

可以說迭代器就是複雜的指標,指標是狹義上的迭代器。

☞『迭代器&指標的不同點』

☞『迭代器&指標的相同點』

▎迭代器基本操作實現

☞『迭代器的定義』

每一種容器都有它專屬的迭代器型別,定義方式如下:

vector::iterator iter

當然,還有begin和end操作:

vectorivec;

vector

::iterator iter1=ivec.bengin();

vector

::iterator iter2=ivec.end();

不知道為什麼,begin指向第乙個元素沒什麼,但是end指向的是最後乙個的後面乙個

☞『迭代器的基本操作』

操作如下:    

++iter //

指向的位置向後乙個

iter++ //

同上--iter //

指向的位置向前乙個

iter-- //

同上iter1==iter2 //

判斷是否相等

iter1!=iter2 //

判斷是否不等

左耳聽風 第三十八周

每週完成乙個arts 每週至少做乙個 leetcode 的演算法題 閱讀並點評至少一篇英文技術文章 學習至少乙個技術技巧 分享一篇有觀點和思考的技術文章。也就是 algorithm review tip share 簡稱arts 繼續按順序來完成 leetcode 前 200 題,以下為個人題解 l...

演算法(三十八)

1 使用者模型檔案去重。抖音上不同的使用者型別我們有不同的使用者模型檔案。我們有乙個模型配置檔案,裡面有很多的不同使用者型別和他們對應的模型檔案。我們需要找出每個模型檔案對應的是哪些使用者型別。給定一行輸入,格式為 a ba表示這個使用者的使用者型別,b表示這個使用者對應的模型檔案。請你輸出每個模型...

演算法 日更 第三十四期 最大流演算法

寫在前面 在之前,我們已經清楚了網路流與最大流是什麼,以及增廣的操作。如果你還不會學習。傳送門 基本思路 先放上一張圖,要不然感覺有點空曠。下方文字請結合上面的食用。先來弄清楚乙個概念 容許流,就是從源點到匯點的流,顯然,乙個圖中的容許流不是唯一的,而最大流就是流量最大的容許流。我們先假設s是源點,...