读书人

for(coniter=con.begin();coniter!=co

发布时间: 2012-08-30 09:55:54 作者: rapoo

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没有影响。
内置类型就不同了。。

读书人网 >C++

热点推荐