【问题标题】:Should C++ Iterators be able to decrement after passing the last item?C++ 迭代器应该能够在传递最后一项后递减吗?
【发布时间】:2011-05-23 11:28:27
【问题描述】:

我一直在修改我的容器以兼容 STL。我已经修改了我的迭代器以具有必要的功能。它们都是随机访问迭代器。目前,它们适用于所有适用的 STL 算法。但是,一旦我的一个迭代器变得无效(超出范围),它将无法正常工作。有必要拥有这个属性吗?具体来说,我害怕不能递减的 end() 迭代器。请注意,它可以与其他有效的迭代器进行比较,甚至可以计算距离。目前迭代器的大小是 4 个字节,如果不是真的需要,我真的不想再添加 4 个。

提前致谢,
水泥

【问题讨论】:

    标签: c++ stl iterator


    【解决方案1】:

    对于random_access_iterator,这是必需的。您将不得不实施它。具体来说,根据 24.1.4.1 对于 bidirectional_iterator(其中 random_access_iterator 是一个特化),递减必须始终有效。

    【讨论】:

    • 感谢您的及时答复。
    【解决方案2】:

    std::reverse_iterator 取决于 container.end() 是否有效并且可以递减。

    【讨论】:

      猜你喜欢
      • 2021-11-21
      • 2021-11-25
      • 2012-06-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-13
      • 2012-08-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多