關於迭代器操作符必須如何工作的「定義」的任何想法或鏈接?更準確地說:例如,運算符「==」和「!=」必須被實現 - 它們是否必須比較它們持有的數據的成員(這將是一個問題,因爲迭代器首先不應該瞭解數據)?你如何比較.end()和.start()?對於指針迭代器:它只是一個地址檢查?C++迭代器操作符定義
很高興聽到您的想法或獲得定義的鏈接。
關於迭代器操作符必須如何工作的「定義」的任何想法或鏈接?更準確地說:例如,運算符「==」和「!=」必須被實現 - 它們是否必須比較它們持有的數據的成員(這將是一個問題,因爲迭代器首先不應該瞭解數據)?你如何比較.end()和.start()?對於指針迭代器:它只是一個地址檢查?C++迭代器操作符定義
很高興聽到您的想法或獲得定義的鏈接。
原始的STL有一個design document on iterators。
總之,它們是指針的泛化,因此==
應該檢查兩個迭代器是否指向同一個容器中的同一項。指針迭代器的指針確實應該相等。
比較begin()
或rbegin()
應該是微不足道的;與end()
或rend()
相比可以以各種方式完成,例如使其成爲等於容器的size()
的索引。
我認爲你需要閱讀的東西是這樣的:http://stdcxx.apache.org/doc/stdlibref/iterators.html
運營商==
和!=
比較迭代器,而不是他們參考的數據。
偉大的,這是我所希望的和我期待的。感謝您的鏈接。我和一位實施自己的Iterator嵌套類的同事發生了爭執,並對數據進行了比較,這些數據與.end()或類似的相比會導致嚴重的問題。 – gilgamash
==和!=操作符不需要比較內容,它們只是檢查兩個迭代器是否引用同一個對象。
這就是我所希望的,參見上文。 Thaks尋求答案。 – gilgamash