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 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算