--begin(container) - 被定义为行为更重

--begin(container) - is defined behavier?

本文关键字:定义 container --begin      更新时间:2023-10-16

我正在为我的自定义双向迭代器实现递减运算符。 指向 Range 的第一个元素的递减迭代器是否是定义的行为?递减后是否有一些特殊值,如 Range.end()?

在所有标准库容器的迭代器中,这是未定义的行为。 但是,如果您要创建自己的迭代器类,则不必如此。

迭代器的要求相当明确: 在 24.2.6 [双向迭代器] 中,表 110:

--r (表达式) X& (返回类型) pre:存在s,使得 r == ++s .

由于c.begin()没有这样的s,因此不能在不违反前提条件的情况下递减。