You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++标准中是否有要求迭代器两次解引用返回相同值的正式规定?

C++迭代器两次解引用的一致性要求
  • 迭代器的行为由其所属的迭代器类别决定:

    • 输入迭代器:标准明确允许这类迭代器仅支持单遍访问,两次解引用可能返回不同值,甚至解引用后迭代器状态会发生变化(比如istream_iterator),因此你的assert(v1 == v2)无法保证成立。
    • 前向迭代器及更高级别(包含双向、随机访问、连续迭代器):标准要求这类迭代器的解引用结果是稳定的——只要迭代器未被修改(如自增、赋值操作),多次解引用必须指向同一个对象。只要该对象在两次解引用之间没有被外部修改,两次解引用得到的值必然相等,你的assert符合标准预期。
  • 关于equality_preservation:它规范的是操作不会改变迭代器的相等性,和解引用结果的稳定性分属不同标准条款,你并没有遗漏。

C++标准中对前向迭代器的核心要求之一:相等的前向迭代器在未被修改时,解引用结果指向同一个对象。这直接保证了无外部修改时,同一迭代器的两次解引用值相等。

内容的提问来源于stack exchange,提问作者Damir Tenishev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 11:32:34