我正在实现自定义随机访问stl迭代器。 ATL类的包装器,如CArray
。所以我有索引而不是指针。我的end()
- 迭代器的索引为-1。如何为随机访问迭代器实现“少于运算符”?
正如我所见here比较运算符如“小于”必须实现。
我的问题是;如果其中一个比较参数是end()
-Iterator,结果如何?它是否定义了行为?
VS2015 implements vector_iterator
这样;
bool operator<(const _Myiter& _Right) const
{ // test if this < _Right
_Compat(_Right);
return (_Ptr < _Right._Ptr);
}
,但我不知道什么会被happend,如果_Right
或*this
是end()
- 迭代器。
编辑:end()
索引为-1
的想法很糟糕。现在我使用容器大小作为end()
-iterator的索引。
这真的取决于你的迭代器是如何实现的。没有代码,所以没有人可以回答这个问题。 – ForEveR
@ForEveR,但我要问一个行为。 Is end()
'end()'是一个迭代器,它指向一个容器的最后一个元素(因为迭代器是在指针上建模的,而一个指向数组的常规指针必须允许一个值超过数组的末尾,因此任何有效的迭代器都会小于容器的'end()'迭代器。当比较两个具有'end()'值的迭代器时,两者都不会少于另一个。简单地说,只要'iter'引用容器的一个元素,'iter