Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在为我的自定义双向迭代器实现递减运算符。指向 Range 的第一个元素的递减迭代器是定义的行为吗?递减后是否有一些特殊的值,比如 Range.end()?
在所有标准库容器的迭代器中,这是未定义的行为。但是,如果您正在创建自己的迭代器类,则不必如此。
迭代器要求相当明确:在 24.2.6 [bidirectional.iterators] 中,表 110:
--r(表达式)X&(返回类型)pre:存在s这样的r == ++s。
--r
X&
s
r == ++s
由于没有这样s的 for c.begin(),所以不能在不违反前提条件的情况下递减。
c.begin()