c 迭代器能修改其值嗎 CPP迭代器公升級詳解

2021-10-17 08:03:35 字數 2868 閱讀 5164

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

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

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上的一道經典習題,我們首先可以想到的解決方案是 再建立乙個臨時陣列把偶數先存放起來,然後把臨時空間的...