所以我試圖實現一個插入函數,它將一個元素插入列表中正確的順序。迭代器無故迭代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
恐怕,但是如果你沒有發佈,我們不能幫助你一個完整的例子。 –