問題タブ [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.
c++ - forループ内のイテレータの初期化は悪いスタイルと見なされますか?その理由は?
通常、次のような STL コードが見つかります。
しかし、実際には次のように記述することをお勧めします。
スコープが心配な場合は、中かっこを追加します。
.end() 関数はループの各反復で呼び出されないため、特にコンソールをプログラミングしている場合は、これにより速度と効率が向上するはずです。私はパフォーマンスの向上を当然のことと考えています。合理的に聞こえますが、どの程度かはわかりません。また、使用しているコンテナーの種類と実際の STL 実装によって異なります。しかし、このスタイルを数か月間使用した今、私はとにかく最初のスタイルよりも実際に気に入っています.
その理由は読みやすさです: for 行はきちんと整頓されています。最初の例のスタイルを使用すると、実際のプロダクション コードで修飾子とメンバー変数を使用すると、非常に長い行を簡単に作成できます。そのため、この例では意図的に水平スクロール バーを表示するようにしました。;)
一方、for ループの外側のスコープに Iter 変数を突然導入します。しかし、少なくとも私が働いている環境では、最初の例でも外側のスコープで Iter にアクセスできたはずです。
これについてどう思いますか?Iter の範囲を制限する可能性以外に、最初のスタイルの長所はありますか?
java - 改善されたコレクション イテレータ
個人的には、java.util.Iterator によって提供される機能の範囲はかなり哀れだと思います。少なくとも、次のようなメソッドが必要です。
- peek() はイテレータを進めずに次の要素を返します
- previous() は前の要素を返します
first() や last() など、他にも多くの可能性があります。
そのようなサードパーティのイテレータが存在するかどうかは誰にもわかりませんか? 既存の Java コレクションと連携できるように、おそらく java.util.Iterator のデコレーターとして実装する必要があります。理想的には、「ジェネリック対応」である必要があります。
前もってありがとう、ドン
c++ - リスト反復子はインクリメントできません
Visual Studio 2003 を使用してビルドされた古いプロジェクトがあり、最近 vs2005 で再コンパイルしました。ただし、実行時に次のエラーが発生します。
リスト反復子はインクリメントできません
プログラムをこの関数までたどりました:
私は C++ の専門家ではありませんが、これは VS デバッガーが得た限りです。誰かが私に何が問題なのか説明してもらえますか?
ありがとう
php - オブジェクトは反復子を実装するか、反復子を実装する別のオブジェクトを含む必要があります
私は SPL イテレータについて頭を悩ませようとしていますが、それを処理する 2 つの方法を考え出しました。最初のバージョンはそれほど複雑ではないように見えますが、2 番目のバージョンには構成の感覚があります (と思います)。
私が見ていないのは、どちらが他のものよりも好ましいですか? それとも私はこれを複雑にしすぎていますか?
ここに私の考えがあります:
オブジェクトは反復子を実装します。
オブジェクトには、反復可能なオブジェクトが含まれています。
c++ - 非 void STL 消去の安全な等価物は何ですか?
hash_map と次のようなコードがあるとします。
しかし、GCC の STL は消去時にイテレータを返さず、void を返します。今のようなコードです
安全 (つまり、イテレータを無効にしない、またはその他の予期しないまたは不快なことをしない)? これは hash_map であることに注意してください。
java - 外部イテレータと内部イテレータ
Java の外部イテレータと内部イテレータとは何ですか?
python - "yield" キーワードは何をしますか?
yield
Pythonでのキーワードの使用は何ですか? それは何をするためのものか?
たとえば、私はこのコード1を理解しようとしています:
そして、これは呼び出し元です:
メソッド_get_child_candidates
が呼び出されるとどうなりますか? リストは返されますか? 単一の要素?また呼ばれますか?後続の通話はいつ停止しますか?
1. このコードは Jochen Schulz (jrschulz) によって書かれました。彼はメートル空間用の優れた Python ライブラリを作成しました。これは完全なソースへのリンクです: Module mspace。
python - 2 つの Python イテレータをマージするにはどうすればよいですか?
list
aとitertools.count
object (つまり、無限値ジェネレーター) の2 つの反復子があります。これら 2 つをマージして、2 つの yield 値を交互に返すイテレータを作成したいと思います。
これを行う最も簡単で簡潔な方法は何ですか?
python - Python ジェネレーターを使用するのに適していないのはいつですか?
これは、 Python ジェネレーター関数を何に使用できますか?の逆です。: python ジェネレーター、ジェネレーター式、およびitertools
モジュールは、最近の python の私のお気に入りの機能の一部です。これらは、大量のデータに対して一連の操作を実行するように設定する場合に特に便利です。DSV ファイルを処理するときによく使用します。
では、ジェネレーター、ジェネレーター式、または関数を使用するのに適していないitertools
のはどのような場合でしょうか?
zip()
、itertools.izip()
または_range()
以上xrange()
、または[x for x in foo]
以上(x for x in foo)
?
明らかに、最終的にはジェネレーターを実際のデータに「解決」する必要があります。通常は、リストを作成するか、ジェネレーター以外のループで反復処理します。長さを知る必要がある場合もあります。これは私が求めているものではありません。
中間データ用に新しいリストをメモリに割り当てないように、ジェネレータを使用します。これは、大規模なデータセットの場合に特に意味があります。小さなデータセットにも意味がありますか? 顕著なメモリ/CPU のトレードオフはありますか?
リスト内包表記のパフォーマンスと map() および filter()の目を見張るような議論に照らして、誰かがこれについてプロファイリングを行っているかどうかに特に興味があります。(代替リンク)
c++ - std::copyを使用して任意の数の値を読み取る方法は?
私はこれと反対の行動をコード化しようとしています:
次のようになります。
しかし、私は 'end' イテレータに固執しています。入力インターレータは std::advance を使用できず、同じソースで 2 つのストリームを使用することもできません...
これを解決するエレガントな方法はありますか? もちろん、for ループを使用することもできますが、もっといいものがあるかもしれません :)