2011-12-12 99 views
0

關於迭代器操作符必須如何工作的「定義」的任何想法或鏈接?更準確地說:例如,運算符「==」和「!=」必須被實現 - 它們是否必須比較它們持有的數據的成員(這將是一個問題,因爲迭代器首先不應該瞭解數據)?你如何比較.end()和.start()?對於指針迭代器:它只是一個地址檢查?C++迭代器操作符定義

很高興聽到您的想法或獲得定義的鏈接。

回答

1

原始的STL有一個design document on iterators

總之,它們是指針的泛化,因此==應該檢查兩個迭代器是否指向同一個容器中的同一項。指針迭代器的指針確實應該相等。

比較begin()rbegin()應該是微不足道的;與end()rend()相比可以以各種方式完成,例如使其成爲等於容器的size()的索引。

+0

這就是我所希望的,參見上文。 Thaks尋求答案。 – gilgamash

4

我認爲你需要閱讀的東西是這樣的:http://stdcxx.apache.org/doc/stdlibref/iterators.html

運營商==!=比較迭代器,而不是他們參考的數據。

+0

偉大的,這是我所希望的和我期待的。感謝您的鏈接。我和一位實施自己的Iterator嵌套類的同事發生了爭執,並對數據進行了比較,這些數據與.end()或類似的相比會導致嚴重的問題。 – gilgamash

0

==和!=操作符不需要比較內容,它們只是檢查兩個迭代器是否引用同一個對象。