2017-03-04 109 views
0

我刚刚在几天前开始使用迭代器。虽然我确实了解了基本想法,但我需要帮助清理一些问题。使用迭代器递增

我学习C++的书,并在约迭代器的一章结束还有那个是这样一个小任务:

“假设‘得分’是保存int类型的元素的矢量,现在做什么毛病下面的代码段(意味着增加每个元素)?

vector<int>::iterator iter; 

for(iter =scores.begin(); iter !=scores.end(); iter++) 
{ 
    iter++; 
} 

,很明显的迭代器ITER已经变得由为循环增加,即使没有循环内的代码,所以我想我应该只要这样做就可以递增迭代器引用的向量值。

for(iter =scores.begin(); iter !=scores.end(); iter++) 
{ 
    *iter++; 
} 

但是,也返回了一个错误。所以它让我想到......是否有可能使用迭代器增加值?或者,迭代器只是一个对象,用于遍历容器中的对象并引用它们?无法真正修改其价值?

+1

使用括号应该修复:'(* iter)++;'。查找运算符优先级。 –

回答

2

将其更改为:

for(iter =scores.begin(); iter !=scores.end(); iter++) 
{ 
    (*iter)++; 
} 

在C++运营商有不同的优先级,见here for a table

在解除引用之前执行后缀增量。