問題タブ [iterator]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 基本的なイテレータを構築するには?
Pythonで反復関数(または反復子オブジェクト)を作成するにはどうすればよいですか?
c++ - C++ でツリーを作成するには?
ポインターの代わりに反復子を使用する C++ でツリー データ構造を作成するにはどうすればよいですか? これを行うことができるSTLには何も見つかりませんでした。私がやりたいことは、次のようなツリーを作成および操作できるようにすることです。
ありがとう、tree.hh はまさに私が探していたもののようです。
これが、任意のインデックス タイプを保持し、検索用に最適化され、挿入が得意なデータ構造の利点を得る場合は、マップの使用を検討してください。
マップは、対数検索、対数挿入、対数削除、線形空間など、ツリーと同じパフォーマンス保証を持つ連想コンテナーです。内部的には、赤黒木として実装されることがよくありますが、それは保証ではありません。それでも、STL ユーザーとして気にする必要があるのは、STL アルゴリズムとデータ構造のパフォーマンス保証だけです。それらがツリーとして実装されているか、小さな緑の男性として実装されているかは問題ではありません。
地図が必要かどうかわかりませんが、情報をありがとうございます。ツリーを実装する代わりに、可能な限りマップを使用することを忘れないでください。
bash - Bashで「for」ループを作成するにはどうすればよいですか?
私は次のような基本的なループを探しています:
しかし、Bashの場合。
java - C++ (stl) と Java のイテレータ、概念的な違いはありますか?
少し離れて古いメロンを払い落とそうとした後、C++に戻ります。
hasNext()
Java では、 Iterator は、 、 、next()
およびのメソッドを持つコンテナーへのインターフェースremove()
です。の存在は、通過するコンテナの制限の概念を持っているhasNext()
ことを意味します。
C++ 標準テンプレート ライブラリでは、イテレータはサポートするデータ型またはクラスを表しているように見えますが、制限の概念が組み込まれていないoperator++
ためoperator==
、次の項目に進む前に比較が必要です。通常の場合、2 番目のイテレーターがコンテナーの終了である場合、2 つのイテレーターを比較するユーザーが制限をチェックする必要があります。
ここで興味深いのは、C++ ではポインターが配列への反復子であることです。STL は既存のものを採用し、その周りに慣例を構築しました。
私が見逃しているこれ以上の微妙な点はありますか?
java - Java の Iterator インターフェースの利点は何ですか?
Java Collections Framework がリンクされたリストにデータ構造を実装する方法について学びました。私が理解していることからIterators
、リストなどのデータ構造内のアイテムをトラバースする方法があります。このインターフェイスが使用される理由 メソッドがhasNext()
でnext()
ありremove()
、データ構造の実装自体に直接コーディングされていないのはなぜですか?
Java Web サイトから:リンク テキスト
パブリック インターフェイス Iterator<E>
コレクションに対する反復子。イテレータは、Java コレクション フレームワークで Enumeration に取って代わります。イテレータは、次の 2 つの点で列挙型とは異なります。
このインターフェースは、Java Collections Framework のメンバーです。
- イテレータを使用すると、呼び出し元は、明確に定義されたセマンティクスを使用して、反復中に基になるコレクションから要素を削除できます。
- メソッド名が改善されました。
グーグルで調べてみましたが、明確な答えが見つからないようです。Sunがそれらを使用することを選択した理由を誰かが明らかにすることができますか? デザインが良いからでしょうか?セキュリティ強化?グッド OO プラクティス?
どんな助けでも大歓迎です。ありがとう。
java - forループまたはwhileループで繰り返しますか?
次のようなコードをよく見かけます。
しかし、私はそれを次のように書いています(Java 1.5が利用できない場合、またはfor eachが使用できない場合):
なぜなら
- 短いです
- それは
i
より小さな範囲にとどまります - 混乱の可能性を減らします。(
i
while 外で使用されますか? どこでi
宣言されますか?)
複雑なことを行うために複雑なコードを作成するだけで済むように、コードはできるだけ簡単に理解できるようにする必要があると思います。どう思いますか?どちらが良いですか?
python - 有限イテラブルの無限イテラブルを連鎖(平坦化)するPythonイディオム?
リスト(または有限イテレータ)を返すイテレータ(無限イテレータ)があるとします。たとえば、
最初のイテレータから各要素を返し、次に 2 番目のイテレータから各要素などを返すイテレータ (明らかに無限) を取得するための Python の良いイディオムは何ですか。上記の例では、 を返し1,2,3,1,2,3,...
ます。イテレータは無限であるため、機能しitertools.chain(*infinite)
ません。
関連している
c++ - vector::iterator または list::iterator の代わりに「任意の種類の入力反復子」を返す
有向グラフを格納するためのデータ構造を C++ で実装したいとします。アークは、STL コンテナーのおかげでノードに格納されます。STL のような方法で、ユーザーがノードのアークを反復処理できるようにしたいと考えています。
私が抱えている問題は、具体的なクラスで実際に使用する STL コンテナーを Node クラス (実際には抽象基本クラスになる) で公開したくないということです。したがって、メソッドが std::list::iterator または std::vector::iterator を返すようにしたくありません...
私はこれを試しました:
しかし、vector::const_iterator を使用して ArcIterator を作成することはできないため、これは正しくありません。では、この ArcIterator は何でしょうか?
STL のカスタム イテレータに関するこの論文を見つけましたが、役に立ちませんでした。今日はちょっと重いかな…;)
variables - iという名前の変数は受け入れられませんか?
変数の命名規則に関する限り、イテレータには名前を付ける必要がありますか、i
それとももっとセマンティックな名前を付ける必要がありますcount
か?使わないのならi
、どうして?それが許容できると感じたi
場合、それを使用すべきではない反復のケースはありますか?
c++ - 配列インデックスの代わりに反復子を使用する理由
次の 2 行のコードを見てください。
この:
2番目の方法が好ましいと言われています。これはなぜですか?