我几天前才开始使用迭代器。尽管我确实了解了基本思想,但是我需要帮助清除一些问题。

我正在从一本书中学习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/

10-11 23:13
查看更多