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