我几天前才开始使用迭代器。尽管我确实了解了基本思想,但是我需要帮助清除一些问题。
我正在从一本书中学习c ++,在本章的最后,关于迭代器的内容如下:
“假设“分数”是一个包含int类型元素的向量,下面的代码片段(想增加每个元素)怎么了?
vector<int>::iterator iter;
for(iter =scores.begin(); iter !=scores.end(); iter++)
{
iter++;
}
现在,很明显,即使循环中没有代码,迭代器迭代器也已通过for循环递增。所以我认为我应该这样做,以增加迭代器引用的向量的值。
for(iter =scores.begin(); iter !=scores.end(); iter++)
{
*iter++;
}
但这也返回了一个错误。所以这让我开始思考...甚至有可能使用迭代器来增加值吗?还是迭代器只是一个用于遍历容器中的对象并引用它们的对象?无法实际修改其价值?
最佳答案
更改为:
for(iter =scores.begin(); iter !=scores.end(); iter++)
{
(*iter)++;
}
在C ++中,运算符具有不同的优先级,请参见here for a table。
后缀增量在取消引用之前执行。
关于c++ - 使用迭代器递增,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42596844/