water_shine 2017-02-26 07:47 采纳率: 42.9%
浏览 737
已采纳

为什么第一段程序用迭代器会有错误?而第二段是对的呢

1.图片说明
2.图片说明

  • 写回答

1条回答 默认 最新

  • leewers 2017-02-26 10:52
    关注

    的确是那句话的问题,由于C++标准中只有有限的几个操作符保证从左到右的执行顺序,其他的都无法保证,就比如*beg == *++beg,其实可以拆成temp = ++beg和*beg == *temp两个步骤,至于哪个操作在前,标准没有无法保证,一旦前者先执行,当beg为str.end()前一个元素的迭代器时,经过自增,就成了off-the-end迭代器,对其解引用为未定义行为,可能引起程序崩溃

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 一个识别内容的自动化脚本程序
  • ¥15 anaconda虚拟python环境部署langchain-chatchat报错
  • ¥20 matlab有约束条件下的多元函数求最小值
  • ¥50 如何隐藏网页弹出框的url地址栏
  • ¥20 metropolis算法模拟二维ising模型来计算磁化强度,fortran
  • ¥15 uniapp-typescript-vue报错
  • ¥15 oracle强制关机以后报错01033
  • ¥15 给Chat with RTX添加语言模型时遇到问题
  • ¥15 oracle修复,怎么根据日志修复呀?
  • ¥15 使用Stable Diffusion时出现错误