各位,请问为什么后面三个输出不一样?
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的第一个元素;然后iter加1,指向vector的第二个元素
cout << *(iter+1) << endl;
因为上一步iter已经指向第二个元素,因此iter+1就是指向第三个元素,所以输出4,但iter值并没有改变,仍旧指向第二个元素
cout << *(++iter) << endl;
++iter是先将iter值加1,然后再进行处理,由于上一步并未改变iter的值,所以iter指向第二个元素,++iter后,iter指向第三个元素,因此输出第三个元素值4