迭代器是一種檢查容器內元素並遍歷元素的資料型別。
迭代器提供了乙個容器中的物件的訪問方法,並且定義了容器中物件的範圍。
iterator模式又稱cursor(游標)模式,用於提供一種方法順序訪問乙個聚合物件中各個元素,而又不需要暴露改物件的內部表示。詳參c++迭代器 iterator - chao_yu - c++迭代器 iterator - chao_yu -
1.前向迭代器:p++/++p注:可以再乙個正確的區間內進行讀寫操作。
2.雙向迭代器:p--/--p注:在前向迭代器的基礎上,提供了單步向後迭代元素的能力。
3.輸入迭代器:*p/p=p1/p==p1/p!=p1注:只能單步向前迭代元素,不允許修改由該類迭代器引用的元素。
4.輸出迭代器:*p/p=p1/正向迭代器注:該類迭代器只能單步向前迭代元素,只允許對元素有寫的能力。
5.隨機迭代器:p+=i/p-=i/p+i/p-i/p[i]/pp1/p>=p1注:該類迭代器能完成以上所有迭代器的工作,他有獨自的特性就是可以像指標那樣進行算數計算,而不是僅僅只有單步向前或向後迭代。
1.支援一乙個不同的方式遍歷乙個聚合(容器),且複雜的聚合可用多種方式進行遍歷。如二叉樹的前序遍歷、中序遍歷和後序遍歷,以及有條件的遍歷等。
2.迭代器簡化了聚合的介面,有了迭代器的遍歷介面,聚合本身就不再需要類似的遍歷介面了。
3.在同乙個聚合(容器)上可以有多個遍歷,每乙個迭代器都保持他自己的遍歷狀態,因此你可以同時進行多個遍歷。
4.iterator可以遍歷不同的聚合結構(需擁有相同的基類)提供了乙個統一的介面,即支援多型迭代。
與集合密切相關限制了iterator模式的廣泛使用。
迭代器是指標的泛化,它允許程式設計師用相同的方式處理不同的資料結構(容器)。
迭代器類似c語言中的指標型別,它提供了對物件的間接訪問。
指標是c語言中的知識,而在c++中特定的迭代器。指標靈活,迭代器功能豐富。
迭代器提供了乙個對容器物件或者string物件的訪問方法,並定義了乙個範圍。
每個容器定義了一種名為iterator的型別,這種型別支援迭代器的各種行為。
輸出迭代器只用於寫乙個序列,他可以進行遞增和提取操作。
例項:
//輸出迭代器例項#include#includeusing namespace std;void main()
結果為:
輸入迭代器只用於讀乙個序列,他可以進行遞增、提取和比較操作。
例項:
#include#includeusing namespace std;void main()system("pause");}
結果為:
前向迭代器既可用於讀,又可用於寫。他不僅具有輸入和輸出迭代器的功能,還具有 儲存其值的功能,從而能夠從迭代器原來的位置開始重新遍歷序列。
例項:
//前向迭代器例項#include#includeusing namespace std;void main()
結果為:
雙向迭代器既可以讀,又可以寫,與前向迭代器類似,知識雙向迭代器可作遞增和遞減操作。
例項:
//雙向迭代器應用例項#include#includeusing namespace std;void main()
結果為:
隨機訪問迭代器是最強大的迭代器型別,不僅具有雙向迭代器的所有功能,還能使用指標的算術運算和所有比較運算。
例項:
#include#includeusing namespace std;void main()
結果為:
迭代器是訪問容器中的元素,演算法是對容器中的元素進行操作。每種容器都有各自的特點,只有熟練掌握這些特點才能將標準模板庫的作用充分發揮,並且應盡可能多的使用標準模板庫提供的演算法,這樣可以節省許多開發時間。
gcc 能編譯 c 嗎
在某種程度上gcc和g 都可以編譯.cpp字尾的程式,但是因為gcc命令不能自動和c 程式使用的庫聯接,所以通常用g 來完成鏈結。字尾為.c的,gcc把它當作是c程式,而g 當作是c 程式 字尾為.cpp的,兩者都會認為是c 程式,注意,雖然c 是c的超集,但是兩者對語法的要求是有區別的。c 的語法...
C 迭代器之 反向迭代器
反向迭代器 reverse iterator 是普通迭代器的介面卡,通過重新定義自增和自減操作,以達到按反序遍歷元素的目的。如果在標準演算法庫中用反向迭代器來代替普通的迭代器,那麼執行結果與正常情況下相反。除此之外,其用法與普通迭代器完全一樣,我們不作詳細討論。這裡主要討論的是反向迭代器的乙個很特殊...
C 迭代器 迭代器失效問題
問題描述 輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於位於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。這是劍指offer上的一道經典習題,我們首先可以想到的解決方案是 再建立乙個臨時陣列把偶數先存放起來,然後把臨時空間的...