【发布时间】:2016-01-25 11:00:29
【问题描述】:
我正在做 c++ 入门练习 (3.25),我正在尝试增加一个取消引用的迭代器。这是我的想法:
vector <int> arcNotas(10,0); //hold amount of grades by 10-20-30....90-100
int notas = 0;
auto it = arcNotas.begin();
while (cin >> notas && notas!= 1000) {
it += notas / 10; //move the iterator to the right position
*it++; //increment the quantity of elements in that position
it = arcNotas.begin(); //reset to the initial position
}
但是当我编译它时,编译器说(在第一个“notes”输入之后)“vector iterator not incrementable”。我正在取消引用it 专门这样做......我只是不明白出了什么问题。我进行了搜索,但我发现的只是增加it而不是*it的问题。
【问题讨论】:
-
注意:
*it++表示*(it++)。如果您的意思是(*it)++,那么您必须这样写:) -
@psmears 废除
++的另一个原因。 -
//将迭代器移动到正确的位置..为什么这是正确的?
-
还要注意,
arcNotas.at(notas / 10)++只需一行,看起来更简单。 到处使用迭代器是个坏主意。 -
@Human Helfawi 我的想法是:如果我有一个 90 级,那么把它放在向量的第 9 个对象中。这就是我的意思
标签: c++ vector iterator increment dereference