【发布时间】:2012-11-05 05:11:51
【问题描述】:
我的应用程序中有一个 C++ STL 对象列表,它是在启动时构建的,之后从未更改过;指向同一个列表节点的两个独立迭代器是否总是比较相等?
【问题讨论】:
我的应用程序中有一个 C++ STL 对象列表,它是在启动时构建的,之后从未更改过;指向同一个列表节点的两个独立迭代器是否总是比较相等?
【问题讨论】:
是的。前向迭代器的要求之一是:
C++11 22.4.5/6:如果
a和b都是可解引用的,那么当且仅当*a和*b绑定到同一个对象时a == b。
标准容器上的所有迭代器(至少)都是前向迭代器。
【讨论】:
是的,根据 cplusplus.com:
http://www.cplusplus.com/reference/std/iterator/ForwardIterator/
接受等式/不等式比较。
相等的迭代器意味着指向相同的元素
(我不是这个网站的粉丝,但我相信它。)
cppreference.com 同意并声明不止于此,即所有 InputIterators(可以从中读取)都是 EqualityComparable,请参阅:
【讨论】: