【发布时间】:2019-07-23 12:57:02
【问题描述】:
当我为自定义容器编写迭代器时,
我应该同时定义operator== 和operator!=吗?
最初我认为我应该定义两者,但后来我读到here,在必须定义的表达式表中,只有i != j 必须定义。不过,它说它应该等同于!(i==j),所以我不确定是否应该定义后者。
在 clang++-5.0 中,只要我定义了 !=,基于范围的 for 循环就可以正常工作。
如果还需要定义operator==,下一个问题是:为什么?为什么不只要求其中一个并自动计算另一个?
【问题讨论】:
-
你想要什么样的迭代器?有输入、输出、转发、双向、随机访问。
-
@NathanOliver 我想要一个可以在基于范围的 for 循环中使用的迭代器。是不是叫做“前向迭代器”?
-
根据您的需要,可以使用输入迭代器。 here 是一个非常好的页面,可以帮助您选择要实现的迭代器类型。
标签: c++ iterator operator-overloading