迭代器无故迭代C++
问题描述:
所以我试图实现一个插入函数,它将一个元素插入列表中正确的顺序。迭代器无故迭代C++
我输入变为为:
b.insert('Z');
b.insert('J');
b.insert('Y');
和应该输出为:
J Y Z
我开始通过让我的迭代点在列表的开头,然后通过每个对象迭代直到我找到正确的位置进入它。我不明白为什么,但是当我从迭代开始时,它在进入循环后向前跳一个点。
class list < node<T>* >::iterator itr = bt->level().begin();
cout << "itr now: " << (*itr)->getItem() << endl;
while (itr != bt->level().end()) {
cout << "itr now: " << (*itr)->getItem() << " and " << elem << endl;
// do a bunch of other stuff
++itr;
}
我这个输出应该是这样的:
itr now: Z
itr now: Z and J
itr now: J
itr now: J and Y
而是它出来作为
itr now: Z
itr now: Z and J
itr now: J
itr now: Z and Y
能有人为告诉我发生了什么这就是造成这个问题?
将问题简化为[SSCCE](http://sscce.org/)。什么是'elem'? “//做一堆其他的东西”是什么?第二条线如何再次达到?此代码不回答任何这些关键问题。 – Mankarse
@Mankarse theres太多的代码复制/粘贴到OP。 ''做一堆其他的东西'与'itr-> getItem()'相比,能够检查项目适合的位置,并用'insert'将它插入到该区域。我认为问题不在于该部分内部的任何地方,因为它在进入循环之前打印出'J',但是一旦它进入它,pritns' Z' – SNpn
恐怕,但是如果你没有发布,我们不能帮助你一个完整的例子。 –