C++小程序(*iter=(*iter)+i)啥意思?为何能改变第二次执行的输出结果?

#include<IOSTREAM>#include<VECTOR>usingnamespacestd;intmain(){cout<<"By:Sayln_wu"<<en... #include <IOSTREAM>
#include <VECTOR>

using namespace std;

int main()
{
cout<<"By:Sayln_wu"<<endl<<endl;
//编写10个元素的vector对象。用迭代器把每个元素值改为当前值+2.
vector<int> ivec(10,8);
cout<<"原值为:"<<endl;
int i=0;
for (vector<int>::iterator iter=ivec.begin();iter!=ivec.end();iter++)
{
i++; cout<<"i="<<i<<endl;
cout<< *iter <<endl; system("pause");
*iter=(*iter)+i; cout<<" ??????? ######## "<<*iter<<endl;
} cout<<" ??????? "<<iter<<endl;
//可以放在上面输出,下面是为了使用const_iterator。
cout<<"修改后的值为:"<<endl;
for(vector<int>::const_iterator citer=ivec.begin();citer!=ivec.end();citer++) //和常量指针差不多const_iterator citer=ivec.begin();
{
cout<<*citer<<endl;
}
//求vector中间值
vector<int>::iterator min = ivec.begin() +ivec.size()/2;
cout<<"中间值为:"<<*min<<endl;
return 0;
}
展开
 我来答
seizeF
推荐于2016-03-28 · TA获得超过412个赞
知道小有建树答主
回答量:207
采纳率:0%
帮助的人:226万
展开全部
(*iter=(*iter)+i)

其中*iter是调用iter对象的operator*成员函数,得到迭代器指向的对象的引用。

(*iter)+i是加法操作,之后(*iter)=xxx是将加法的结果赋值给迭代器指向的对象。

追问
是调用后改变原来数组的值吗?方便加Q否,不胜感激!529680073
追答
可以私信或者发邮件,swlsww@hotmail.com
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式