C 中的迭代器

2021-08-15 19:00:45 字數 1645 閱讀 6144

迭代器iterator,它是指標的泛化形式,每種迭代器只能用於它自己的容器類。

(1)前遞增和後遞增操作符++,將迭代器跳到下乙個資料項;

(2)前遞減和後遞減操作符–,將迭代器跳到上乙個資料項;

(3)相等操作符==和不相等操作符!=,測試兩個迭代器是否指向同乙個位置;

(4)提領操作符*,加入p是迭代器變數,使用*p就能訪問位於p處的資料,有些容器既可讀又可寫,有些只能讀。

許多容器類都提供了以下的成員函式來返回迭代器物件,只想資料結構中的特殊資料元素:

• c.begin():返回容器c的迭代器,它指向容器c的第乙個資料項;

• c.end():返回某個東西來測試迭代器在什麼時候越過容器c的最後乙個資料項,即end()返回值標誌的是容器最後乙個元素之後的位置,相當於乙個哨兵值。

使用方法:for(p=c.begin();p!=c.end();p++)

例如使用vector的迭代器例子為:

#include 

#include //引用vector的標頭檔案

using

namespace

std;

int main()

cout

<<"here is what id in the container:\n";

//定義乙個迭代器

vector

::iterator p;

//遍歷vector

for(p=container.begin();p!=container.end();p++)

cout

cout

<<"setting entries to 0:\n";

for(p=container.begin();p!=container.end();p++)

cout

<<"now container contains:\n";

for(p=container.begin();p!=container.end();p++)

cout

0; }

可以使用==或是!=來判斷兩個迭代器是否定位到同乙個元素;

下面用乙個例子來看一下vector的迭代器是如何使用操作運算子的:

vector

container1;

container1.push_back('a');

container1.push_back('b');

container1.push_back('c');

container1.push_back('d');

for(int i=0;i<4;i++)

vector

::reverse_iterator rp;

for(rp=container1.rbegin();rp!=container1.rend();rp++)

cout

《輸出:

/*a b cdd

c b a

*/

此外還有很多種其他的迭代器,比如輸入迭代器、輸出迭代器等。

有關迭代器的參考資料可見:

iterator-c++ reference

iterator library-cppreference

C 中的迭代器

基本操作 迭代器的const iterator 其他 簡單 示例 參考迭代器可以算是c 程式設計中比較高階的的內容了,如果你對此還一無所知,可能你需要先了解一下模板,容器的概念。說到迭代器,首先這個名字就給人一種很厲害的感覺,他是個什麼東東呢?迭代器扮演容器與演算法之間的膠合劑,是所謂的 泛型指標 ...

C 中的迭代器模式

聚合介面 public inte ce ilistcollection 迭代器介面 public inte ce iterator 具體聚合類 public class persons ilistcollection public void add intvalue public iterator ...

C 中的迭代器基礎

yield 關鍵字用於指定返回的乙個或多個值。到達 yield return 語句時,會儲存當前位置。下次呼叫迭代器時將從此位置重新開始執行。迭代器對集合類特別有用,它提供一種簡單的方法來迭代複雜的資料結構 如二進位制樹 摘自msdn 其實照我的理解來說,迭代器就是可以用foreach訪問的資料,也...