關於set和map迭代器支援的運算

2022-07-01 12:27:09 字數 695 閱讀 5637

問題:

曾經想遍歷乙個set遍歷。當時是這樣寫的:

set::iterator b = a.begin()+1
後來發現程式報錯。究其原因是,set迭代器不支援加減數操作

檢視了一下維基百科,下面是有關說明

1.所有迭代器都應該實現自增算符:iter++,++iter

2.bidirectional迭代器:是在前向迭代器的基礎上,多了單步向後遍歷的能力。也就是--iter,iter--。

3.random access迭代器:在雙向迭代器基礎上,具有直接訪問各資料元素的能力。隨機迭代器增加了「迭代器算術運算」:

iter+=i  迭代器遞增i位

iter-=i  迭代器遞減i位

iter+i  加i位後的迭代器

iter-i  減i位後的迭代器

iter[i]  加i位後的迭代器的解引用

iteriter1  如果迭代器iter的位置在iter1後,返回true,否則返回false

iter>=iter1  如果iter的位置在iter1的後面或同一位置時返回true,否則返回false

4.在stl定義的容器中,string,vector與deque提供了隨機訪問迭代器,list、set、multiset、map、multimap提供了雙向迭代器。

Map介面和迭代器

使用iterator迭代器的缺點 1.listiterator有add 方法,可以向list中新增物件,而iterator不能 2.listiterator和iterator都有hasnext 方法,可以實現順序向後遍歷,但是 listiteator裡面有hasprevious 和previous ...

map的迭代器

iterator iter map.entryset iterator map的迭代器,用作遍歷map中的每乙個鍵值對 iterator是迭代器,map之前應該定義過,姑且認為是hashmap。表示map中的鍵值對都是string型別的。map.entryset 是把hashmap型別的資料轉換成集...

迭代器的解釋 set和multiset

莫名其妙的,要看stl了 不得不說,stl是乙個優秀的東西。雖然ta慢 不過,可以省去好多東西啦。下面切入正題。迭代器簡單來說就是stl中的位址。是一種複雜的指標。include return 0 注意 迭代器的可用基本操作符有 取當前迭代器所對應值,和指標一樣 類似加等於1,把當前迭代器變為當前迭...