STL中iterator迭代器

2021-08-22 11:50:06 字數 1736 閱讀 5510

1 標頭檔案

所有容器有含有其各自的迭代器型別(iterator types),所以當你使用一般的容器迭代器時,並不需要含入專門的標頭檔案。不過有幾種特別的迭代器,例如逆向迭代器,被定義於中。

2 迭代器型別

迭代器共分為五種,分別為: input iterator、output iterator、forward iterator、bidirectional iterator、random access iterator。

迭代器iterator不需要含入專門的標頭檔案,它 提供了一種一般化的方法對順序或關聯容器型別中的每個元素進行連續訪問。

迭代器可被用來訪問乙個容器類的所包函的全部元素,其行為像乙個指標。

iterator(迭代器)是用於訪問容器中元素的指示器,從這個意義上說,iterator(迭代器)相當於資料結構中所說的「遍歷指標」,也可以把iterator(迭代器)看作是一種泛化的指標。

stl中關於iterator(迭代器)的實現和使用時相當複雜的,這裡我們暫時不去詳細討論關於iterator(迭代器)的實現和使用,而只對iterator(迭代器)做一點簡單的介紹。

簡單的說,stl中有以下幾類iterator(迭代器): 

輸入iterator(迭代器),在容器的連續區內向前移動,可以讀取容器內任意值; 

輸出iterator(迭代器),把值寫進它所指向的容器中; 

前向iterator(迭代器),讀取佇列中的值,並可以向前移動到下乙個位置(++p, p++); 

雙向iterator(迭代器),讀取佇列中的值,並可以向前後遍歷容器;隨機訪問向iterator(迭代器),可以直接以下標方式對容器進行訪問,vector的iterator(迭代器)就是這種iterator(迭代器); 

流iterator(迭代器),可以直接輸入、輸出流中的值;

每種stl容器都有自己的iterator(迭代器)子類,下面先來看一段簡單的示例**:

#include #include using namespace std;

int main()

for (vector::iterator it = s.begin(); it != s.end(); it++)

cout << '\n';

return 0;

}

vector的begin()和end()方法都會返回乙個vector::iterator物件,分別指向vector的首元素位置和尾元素的下乙個位置(我們可以稱之為結束標誌位)。 

對乙個iterator(迭代器)物件的使用與乙個指標變數的使用極為相似,或者可以這樣說,指標就是乙個非常標準的iterator(迭代器)。

再來看一段稍微特別一點的**:

#include #include using namespace std;

int main()

這段**中的copy就是stl中定義的乙個模版函式,copy(s.begin(), s.end(), ostream_iterator<int>(cout, 」 「));的意思是將由s.begin()至s.end()(不含s.end())所指定的序列複製到標準輸出流out中,用」 「作為每個元素的間隔。也就是說,這句話的作用其實就是將表中的所有內容依次輸出。

iterator(迭代器)是stl容器和演算法之間的「膠合劑」,幾乎所有的stl演算法都是通過容器的iterator(迭代器)來訪問容器的內容的。只有通過有效地運用iterator(迭代器),才能夠有效的運用stl強大的演算法功能。

STL中 auto和迭代器iterator的區別

1.auto基本用法 1 auto的原理就是根據後面的值,來自己推測前面的型別是什麼 2 auto的作用就是為了簡化變數初始化,如果這個變數有乙個很長很長的初始化型別,就可以用auto代替 注意點 a 用auto宣告的變數必須初始化 auto是根據後面的值來推測這個變數的型別,如果後面沒有值,自然會...

C 迭代器(STL迭代器)iterator詳解

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

Java中的 Iterator 迭代器

迭代器是一種設計模式,它是乙個物件,可以遍歷並選擇序列中的物件,而開發人員不需要了解該序列的底層結構 1.iterator 介面中定義的幾個常用方法 hasnext 檢查序列中是否還有元素remove 將迭代器返新返回的元素刪除 2.使用 iterator 迭代器遍歷集合中的元素 public st...