正如在SO上的其他questions中所指出的,来自不同容器的两个迭代器之间的相等比较是UB。
在我的情况下,我有两个列表迭代器,它们可能不是来自同一个容器:
std::list< int >::iterator a, b;
假设我确定它们都不是结束迭代器,我的问题是我是否被允许这样做:
&(*a) == &(*b)
答案 0 :(得分:2)
当然,你可以做到这一点,因为你不是要对迭代器进行编程,而是对他们的再制作地址进行编写。
假设迭代器来自不同的容器,那么在格式良好的程序中这种比较是不可能的。