我几天前刚开始使用迭代器。虽然我确实得到了基本想法,但我需要帮助清理一些东西。
我从一本书中学习c ++,在本章末尾有关迭代器的内容,这里有一个小小的任务:
"假设"得分"是一个包含int类型元素的向量,以下代码片段有什么错误(意味着递增每个元素)?
vector<int>::iterator iter;
for(iter =scores.begin(); iter !=scores.end(); iter++)
{
iter++;
}
现在,显而易见的是迭代器iter已经被for循环递增,即使没有循环内的代码也是如此。所以我认为我应该这样做,增加迭代器引用的向量值。
for(iter =scores.begin(); iter !=scores.end(); iter++)
{
*iter++;
}
但这也是一个错误。所以它让我思考......甚至可以使用迭代器增加值吗?或者是迭代器只是一个对象,用于迭代容器中的对象并引用它们?无法真正修改其价值?
答案 0 :(得分:1)
将其更改为:
for(iter =scores.begin(); iter !=scores.end(); iter++)
{
(*iter)++;
}
在C ++中,运算符具有不同的优先级,请参阅export this specific column to a txt file。
在取消引用之前执行后缀增量。