关于迭代器运算符必须如何工作的“定义”的任何想法或链接?更确切地说:例如,运算符“==”和“!=”必须如何实现 - 他们是否必须比较它们所拥有的数据成员(这将是一个问题,作为迭代器不应该首先了解数据)?你如何比较.end()和.start()?对于指针迭代器:它只是一个地址检查吗?
很高兴听到您的想法或获得定义的链接。
答案 0 :(得分:4)
我认为您需要阅读以下内容:http://stdcxx.apache.org/doc/stdlibref/iterators.html
运算符==
和!=
比较迭代器,而不是它们引用的数据。
答案 1 :(得分:1)
原始STL有design document on iterators。
简而言之,它们是指针的泛化,因此==
应检查两个迭代器是否指向同一容器中的同一项。当指针执行时,指针迭代器确实应该相等。
与begin()
或rbegin()
相比应该是微不足道的;与end()
或rend()
进行比较可以通过各种方式进行,例如使其成为与容器的size()
相等的索引。
答案 2 :(得分:0)
==和!=运算符不应该比较内容,它们只是检查两个迭代器是否引用同一个对象。