猿问

比如下面c++primer有一道习题,该怎么修改呢?

while ( vector<int>::iterator iter != ivec.end() )
// ...
这是不正确的。因为在while 循环之中,表达式部分不能含有declaration,而且iter 也未被
初始化。修正如下:
vector<int>::iterator iter = ivec.begin();
while (iter != ivec.end()) {
//...
++iter;
}
不能写成这样吗:
while ( vector<int>::iterator iter != ivec.end() )
{
doSometing();
iter++;
}

偶然的你
浏览 152回答 2
2回答

回首忆惘然

你这样做是错误的,因为iter没进行初始化,是随机值,就直接判断不等于ivec.end() ,是没有意义的。即使在while()内进行了初始化,也不行。因为这样每次进行while判断时,都会先进行初始化,所以iter++就不能实现自增了。

慕仙森

不能 如果你在括号里面定义 那定义的值没有初始化,是使用不了的while ( vector<int>::iterator iter != ivec.end() ){doSometing();iter++;}iter 没有初始化 所以iter != ivec.end() 这条件是错的
随时随地看视频慕课网APP
我要回答