关于迭代器操作符必须如何工作的“定义”的任何想法或链接?更准确地说:例如,运算符“==”和“!=”必须被实现 - 它们是否必须比较它们持有的数据的成员(这将是一个问题,因为迭代器首先不应该了解数据)?你如何比较.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