jian_rookie 2021-08-20 13:27 采纳率: 100%
浏览 32
已结题

关于vector<int>::const_iterator 的问题,为什么后面三个输出不一样?

各位,请问为什么后面三个输出不一样?

    vector<int> ivec1 = {1,2,4,2,4,1};
    vector<int>::const_iterator iter = ivec1.begin(); //const_iterator只能读,不能写
    cout << *iter << endl;
    cout << *(iter++) << endl;
    cout << *(iter+1) << endl;
    cout << *(++iter) << endl;

输出:
1
1
4
4

  • 写回答

1条回答 默认 最新

  • CSDN专家-link 2021-08-20 13:32
    关注
    cout << *iter << endl;
    因为iter为begin,所以输出vector的第一个元素1
    cout << *(iter++) << endl;
    iter++是先用iter当前值进行处理,处理完成后再加1,所以仍旧输出*iter,即vector的第一个元素;然后iter1,指向vector的第二个元素
     cout << *(iter+1) << endl;
    因为上一步iter已经指向第二个元素,因此iter+1就是指向第三个元素,所以输出4,但iter值并没有改变,仍旧指向第二个元素
     cout << *(++iter) << endl;
    ++iter是先将iter值加1,然后再进行处理,由于上一步并未改变iter的值,所以iter指向第二个元素,++iter后,iter指向第三个元素,因此输出第三个元素值4
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月3日
  • 已采纳回答 8月26日
  • 创建了问题 8月20日

悬赏问题

  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助