【发布时间】:2017-07-24 14:58:32
【问题描述】:
我几天前才开始使用迭代器。虽然我确实了解基本概念,但我需要帮助来澄清一些事情。
我正在从一本书中学习 c++,在关于迭代器的章节末尾有一个小作业是这样的:
“假设“scores”是一个包含int类型元素的向量,那么下面的sn-p代码有什么问题(意在增加每个元素)?
vector<int>::iterator iter;
for(iter =scores.begin(); iter !=scores.end(); iter++)
{
iter++;
}
现在,很明显迭代器 iter 已经被 for 循环递增,即使没有循环内的代码。所以我想我应该这样做来增加迭代器引用的向量的值。
for(iter =scores.begin(); iter !=scores.end(); iter++)
{
*iter++;
}
但这也返回了一个错误。所以它让我思考......甚至可以使用迭代器增加值吗?还是迭代器只是一个对象,用于遍历容器中的对象并引用它们?无法实际修改它们的值?
【问题讨论】:
-
使用括号应该可以解决这个问题:
(*iter)++;。查找运算符优先级。