2011-10-18 18 views
-3

リストの正しい順序に要素を挿入する挿入関数を実装しようとしています。イテレータは何の理由もありません。C++

としての私の入力が行く:私は、リストの先頭に私のイテレータのポイントを作ることから始め、その後、各オブジェクトを反復処理

J Y Z

b.insert('Z'); 
    b.insert('J'); 
    b.insert('Y'); 

とすべき出力として私はそれを入力する正しい場所を見つけるまで、私は理由を理解していませんが、私は反復で始めると、それはループに入った後に先に飛びます。このため

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 

として出てくるこの問題を引き起こして厥起こっていただきましSomoneのは、私に言うことができますか?

+3

問題を[SSCCE](http://sscce.org/)に減らしてください。 'elem'とは何ですか? '/ /他のものを束ねる'とは何ですか? 2行目はどのようにして再び到達するのですか?このコードは、これらの重要な質問のいずれにも答えません。 – Mankarse

+0

@MankarseはOPにコピー/ペーストするにはあまりにも多くのコードをtheres。 '//たくさんの他のものをする'は、 'itr-> getItem()'と比較してアイテムがどこに合っているかをほとんどチェックし、それを 'insert'でそのエリアに挿入します。ループに入る前に 'J'を表示しているので、その部分のどこにでも問題はないと思いますが、一度入力すると' Z'が返されます。 – SNpn

+0

私は恐れますが、投稿しないと助けません完全な例。 –

答えて

0

ソートされた注文を探している場合は、containerに要素を挿入してください。algorithm sortを使用してください。

+0

im asking反復子がループに入ったときに反復子が先にジャンプしている理由は、 'while'ループと' cout'文の間にコードがありません。なぜ 'cout'文の下のコードが、第2回目のリストの始まりが間違っています – SNpn

+6

@SNpn:ルール#1:他の人に助けを求めるとき:情報が必要だと言うなら、それを与えてください。そうでなければ、みんなの時間を無駄にしています。 – jalf

関連する問題