首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

for(coniter=con.begin();coniter!=con.end();++coniter++)没有报错?

2012-08-30 
for(conitercon.begin()coniter!con.end()++coniter++)没报错?!通常情况下C/C++ codeint var2++var+

for(coniter=con.begin();coniter!=con.end();++coniter++)没报错?!
通常情况下

C/C++ code
int var=2;++var++;

这种形式的代码是会报错:"++ needs l-value."

但!
C/C++ code
    vector<int> con(10,20);    vector<int>::iterator coniter;    coniter=con.begin();    ++coniter++;    for(coniter=con.begin();coniter!=con.end();++coniter++)    {        *coniter=(*coniter)*2;    }

却可以通过编译。单步查看,发现只执行一次++操作,不知道为什么

[解决办法]
你可以看看vector的iterator的后置++做了什么,vs2008的stl中,这个vector的iterator的后置++返回一个对象,这个对象是原iterator的一个拷贝,语法没错误,而且对原iterator没有影响。
内置类型就不同了。。

热点排行