迭代器无缘无故地迭代c ++

时间:2011-10-18 10:36:57

标签: c++ iterator

所以我试图实现一个insert函数,它在列表中按正确的顺序插入一个元素。

我的输入为:

  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

可以告诉我发生了什么导致了这个问题吗?

1 个答案:

答案 0 :(得分:0)

请在此处发布您的完整代码,如果您正在寻找已排序的订单,那么只需在container中插入该元素,然后使用标准的algorithm sort即可。