複雑な構造(チェーンを持つハッシュテーブルなど)があり、その構造のカスタムイテレータを作成したい場合は、複雑な構造の内容を単純な構造にコピーすることは有効ですか?リスト)を作成し、暗黙のイテレータを単純な構造体に戻しますか? 余分なメモリが必要だとわかりましたが、私自身のイテレーターをゼロから作成するのではなく、それだけではいけない理由がありますか?構造体をリストにコピーし、リストのイテレータを返すことでイテレータを作成できますか?
答えて
最終的には、イテレータを使用して元のコレクションの要素を編集する必要がない場合は、これを行うことができます。
メモリの問題を特定します。あなたがこれをしてはならない他の理由がありますか?リストを作成するのにかかる時間があります。反復するたびにこのリストのコピーを作成するか、元のコレクションを変更できる場合はリストを最新の状態に保つ必要があります。
イテレータを使用していくつかのルールに合致する最初の要素を見つけたい場合、そのコストは特に不幸です。最初の要素がルールに適合していても要素数が多い場合は、最終的に最初の要素までしか反復しないために多くのコピーを行います。
ただし、ネストされたループと同じジョブを実行する独自のイテレータを作成することはできます。あなたが反復しようとしている構造を知らないでまともなコード例を与えるのは難しいですが、一般的には、現在のサブコレクションが存在するまで、サブコレクション内の要素の反復子を保持するクラスを使用して実装します。完全に反復され、次に次のサブコレクションの開始に移動する。つまり、イテレータにはイテレータ、つまりイテレータが2つあります.1つは要素を返し、もう1つは(サブ)コレクションを返します。
イテレータの中にイテレータを置くことができたことは決してありませんでした。それは私が思ったよりもはるかに簡単になります。複雑なカスタムイテレータクラスを作成せずにリストをコピーするだけでなく、シンプルでクリーンな方法が必要であることは分かっていました。ありがとう! – MousE0910
- 1. イテレータとリスト
- 2. リストのC++イテレータ
- 3. リストのC++イテレータ
- 4. 構造体のオブジェクトをプログラムで作成し、構造体名とフィールド値のリストを持つときにフィールドを埋め込むことは可能ですか?
- 5. 整数のリストのイテレータを指定すると、偶数のイテレータを返す方法はありますか?
- 6. 複数のソート済みリストのイテレータを作成するには?
- 7. java- resetリストの最初の要素にイテレータをリストします
- 8. イテレータを逆イテレータとして使用できますか?
- 9. r - イテレータとiterpcパッケージを使用します。イテレータのサブセットを作成できますか?
- 10. 構造体でリンクされたリストを作成する - C++
- 11. リンクされたリストとイテレータ
- 12. リストを作成<T>イテレータからのインスタンス<T>
- 13. Python_Creating空リストとイテレータでのネーミング
- 14. C:構造体の深いコピーを作成する...構造体の浅いコピーを作成する
- 15. 構造体を作成してリストを作成し、アルゴリズムをスケジューリングする
- 16. Luaで辞書を繰り返すことができるイテレータを作ることはできますか?
- 17. 出力イテレータにコピーできません
- 18. 構造体がリスト内にあるときに構造体フィールドを変更
- 19. イテレータのリスト理解のパフォーマンス
- 20. リスト名としてイテレータを使って新しいリストを作成するには?
- 21. constイテレータと非constイテレータを作成する
- 22. C++テンプレートクラスのイテレータを作成できますか?
- 23. リストのセグメンテーションフォールト<Object*>イテレータ
- 24. javascriptでCOM構造体のインスタンスを作成できますか?
- 25. 関数内でserde_jsonで作成した構造体を返す
- 26. AS3 - リスト構造を作成する
- 27. イテレータを返すマッチアーム?
- 28. cでリンクされたリスト、構造体の構造体、セグメンテーションフォールト
- 29. 構造体またはタプルを錆イテレータの状態にするにはどうすればよいですか?
- 30. openACC構造体のリストを渡す
コピーを作成するために元のコレクションの要素を反復処理する必要はありませんか?また、イテレータを使用して要素を編集したい場合は、コピー方法は動作しません(コピーを編集します)。 – ROX
@ROX各ループにネストされたオブジェクトをコピーしてコピーしますが、hasNext()関数を手動で実装することはできませんまたは類似。編集は利用できない、それは本当です。 – MousE0910