C ++迭代器运算符定义

时间:2011-12-12 12:35:29

标签: c++ iterator overloading operator-keyword

关于迭代器运算符必须如何工作的“定义”的任何想法或链接?更确切地说:例如,运算符“==”和“!=”必须如何实现 - 他们是否必须比较它们所拥有的数据成员(这将是一个问题,作为迭代器不应该首先了解数据)?你如何比较.end()和.start()?对于指针迭代器:它只是一个地址检查吗?

很高兴听到您的想法或获得定义的链接。

3 个答案:

答案 0 :(得分:4)

我认为您需要阅读以下内容:http://stdcxx.apache.org/doc/stdlibref/iterators.html

运算符==!=比较迭代器,而不是它们引用的数据。

答案 1 :(得分:1)

原始STL有design document on iterators

简而言之,它们是指针的泛化,因此==应检查两个迭代器是否指向同一容器中的同一项。当指针执行时,指针迭代器确实应该相等。

begin()rbegin()相比应该是微不足道的;与end()rend()进行比较可以通过各种方式进行,例如使其成为与容器的size()相等的索引。

答案 2 :(得分:0)

==和!=运算符不应该比较内容,它们只是检查两个迭代器是否引用同一个对象。