关于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

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