C 迭代器(Iterator)詳解

2021-09-12 14:02:57 字數 1516 閱讀 5577

1、迭代器(iterator)的介紹 

背景:指標可以用來遍歷儲存空間連續的資料結構,但是對於儲存空間非連續的,就需要尋找乙個行為類似指標的類,來對非陣列的資料結構進行遍歷。 

定義:迭代器是一種檢查容器內元素並遍歷元素的資料型別。 

迭代器提供對乙個容器中的物件的訪問方法,並且定義了容器中物件的範圍。 

迭代器(iterator)是指標(pointer)的泛化,它允許程式設計師用相同的方式處理不同的資料結構(容器)。 

(1)迭代器類似於c語言裡面的指標型別,它提供了對物件的間接訪問。 

(2)指標是c語言中的知識點,迭代器是c++中的知識點。指標較靈活,迭代器功能較豐富。 

(3)迭代器提供乙個對容器物件或者string物件的訪問方法,並定義了容器範圍。

2、迭代器和指標的區別: 

容器和string有迭代器型別同時擁有返回迭代器的成員。如:容器有成員begin和end,其中begin成員複製返回指向第乙個元素的迭代器,而end成員返回指向容器尾元素的下乙個位置的迭代器,也就是說end指示的是乙個不存在的元素,所以end返回的是尾後迭代器。

3、容器迭代器的使用 

每種容器型別都定義了自己的迭代器型別,如vector:vector< int>:: iterator iter;//定義乙個vector型別的iterator名為iter。簡單說就是容器類定義了自己的iterator型別,用於訪問容器內的元素。每個容器定義了一種名為iterator的型別,這種型別支援迭代器的各種行為。 

常用迭代器型別如下:

如上圖所示,迭代器型別主要支援兩類,隨機訪問和雙向訪問。其中vector和deque支援隨機訪問,list,set,map等支援雙向訪問。

1)隨機訪問:提供了對陣列元素進行快速隨機訪問以及在序列尾部進行快速插入和刪除操作。 

2)雙向訪問:插入和刪除所花費的時間是固定的,與位置無關。

迭代器的操作 

1、所有迭代器: 

2、雙向迭代器: 

3、輸入迭代器: 

4、輸出迭代器 

5、隨機迭代器 

C 迭代器(Iterator)詳解

迭代器 iterator 的介紹 背景 指標可以用來遍歷儲存空間連續的資料結構,但是對於儲存空間費連續的,就需要尋找乙個行為類似指標的類,來對非陣列的資料結構進行遍歷。定義 迭代器是一種檢查容器內元素並遍歷元素的資料型別。迭代器提供對乙個容器中的物件的訪問方法,並且定義了容器中物件的範圍。迭代器 i...

C 迭代器Iterator詳解

用處 指標可以用來遍歷儲存空間連續的資料結構,但是對於儲存空間非連續的,就需要尋找乙個行為類似指標的類,來對非陣列的資料結構進行遍歷。定義 迭代器是一種檢查容器內元素並遍歷元素的資料型別,提供了對乙個容器中物件的訪問方法 每種容器型別都定義了自己的迭代器型別,如vector vector int i...

C 迭代器iterator詳解

目錄 程式設計客棧要訪問順序容器和關聯容器中的元素,需要通過 迭代器 iterator 進行。迭代器是乙個變數,相當於容器和操縱容器的演算法之間的中介。迭代器可以指向容器中的某個元素,通過迭代器就可以讀寫它指向的元素。從這一點上看,迭代器和指標類似。迭代器按照定義方式分成以下四種。定義 容器類名 i...