首先,这不是家庭作业。我正在使用我为自己购买的一本书在家里学习 C++ 的入门知识,其中包含一个我坚持使用的练习。它询问我以下代码有什么问题,但我不确定我是否以正确的方式查看它。
这些是练习和代码:
Assuming that scores is a vector that holds elements of type int, what's wrong with the following code snippet (meant to increment each element)?
vector<int>::iterator iter; for (iter = scores.begin(); iter != scores.end(); ++iter) { iter++; }
我的猜测是 'iter++' 被注入(inject)到 for 函数和 for block 中,这意味着它会被注入(inject)两次,因此会超出循环结束。这是正确的吗?
最佳答案
你是对的。这段代码的问题是迭代器在循环内递增,也在循环体执行后递增。
代码应该做的是增加存储在循环内迭代器位置的值,因此我们需要取消引用它。
(*iter)++
关于c++ - 使用 vector 代码片段进行练习,包括 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9501053/