【发布时间】:2016-03-05 18:04:03
【问题描述】:
我有一个比int 或指针更重的迭代器(它是为了在三维周期格中迭代站点的最近邻居,因此它必须包含某些私有支持结构)。要判断迭代器是否位于容器的末尾,我只需要一个比较,但要创建一个指向过去一端的迭代器,我还必须创建支持结构。
因此我想我可以让容器的end() 方法返回一个int,然后重载operator==() 以避免创建一个完整的过去式迭代器。 This answer 暗示这可能是个好主意。对于双向迭代器,这似乎是错误的,因为我后来了解到(例如从this question),无论end() 返回的任何内容都必须递减到最后一个元素。
由于我的迭代器只是向前的,我认为它仍然可以,但现在我发现我不能使用 std::find()(可能还有其他 STL 算法),它需要两个相同(迭代器)类型的参数。
所以,我的问题是:让end() 返回与begin() 不同的类型是否违反标准行为?这是一个坏主意吗?
【问题讨论】:
标签: c++