問題タブ [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.

0 投票する
13 に答える
5069 参照

c++ - forループ内のイテレータの初期化は悪いスタイルと見なされますか?その理由は?

通常、次のような STL コードが見つかります。

しかし、実際には次のように記述することをお勧めします。

スコープが心配な場合は、中かっこを追加します。

.end() 関数はループの各反復で呼び出されないため、特にコンソールをプログラミングしている場合は、これにより速度と効率が向上するはずです。私はパフォーマンスの向上を当然のことと考えています。合理的に聞こえますが、どの程度かはわかりません。また、使用しているコンテナーの種類と実際の STL 実装によって異なります。しかし、このスタイルを数か月間使用した今、私はとにかく最初のスタイルよりも実際に気に入っています.

その理由は読みやすさです: for 行はきちんと整頓されています。最初の例のスタイルを使用すると、実際のプロダクション コードで修飾子とメンバー変数を使用すると、非常に長い行を簡単に作成できます。そのため、この例では意図的に水平スクロール バーを表示するようにしました。;)

一方、for ループの外側のスコープに Iter 変数を突然導入します。しかし、少なくとも私が働いている環境では、最初の例でも外側のスコープで Iter にアクセスできたはずです。

これについてどう思いますか?Iter の範囲を制限する可能性以外に、最初のスタイルの長所はありますか?

0 投票する
11 に答える
8264 参照

java - 改善されたコレクション イテレータ

個人的には、java.util.Iterator によって提供される機能の範囲はかなり哀れだと思います。少なくとも、次のようなメソッドが必要です。

  • peek() はイテレータを進めずに次の要素を返します
  • previous() は前の要素を返します

first() や last() など、他にも多くの可能性があります。

そのようなサードパーティのイテレータが存在するかどうかは誰にもわかりませんか? 既存の Java コレクションと連携できるように、おそらく java.util.Iterator のデコレーターとして実装する必要があります。理想的には、「ジェネリック対応」である必要があります。

前もってありがとう、ドン

0 投票する
8 に答える
16093 参照

c++ - リスト反復子はインクリメントできません

Visual Studio 2003 を使用してビルドされた古いプロジェクトがあり、最近 vs2005 で再コンパイルしました。ただし、実行時に次のエラーが発生します。

リスト反復子はインクリメントできません

プログラムをこの関数までたどりました:

私は C++ の専門家ではありませんが、これは VS デバッガーが得た限りです。誰かが私に何が問題なのか説明してもらえますか?

ありがとう

0 投票する
6 に答える
817 参照

php - オブジェクトは反復子を実装するか、反復子を実装する別のオブジェクトを含む必要があります

私は SPL イテレータについて頭を悩ませようとしていますが、それを処理する 2 つの方法を考え出しました。最初のバージョンはそれほど複雑ではないように見えますが、2 番目のバージョンには構成の感覚があります (と思います)。

私が見ていないのは、どちらが他のものよりも好ましいですか? それとも私はこれを複雑にしすぎていますか?

ここに私の考えがあります:

オブジェクトは反復子を実装します。

オブジェクトには、反復可能なオブジェクトが含まれています。

0 投票する
3 に答える
1430 参照

c++ - 非 void STL 消去の安全な等価物は何ですか?

hash_map と次のようなコードがあるとします。

しかし、GCC の STL は消去時にイテレータを返さず、void を返します。今のようなコードです

安全 (つまり、イテレータを無効にしない、またはその他の予期しないまたは不快なことをしない)? これは hash_map であることに注意してください。

0 投票する
6 に答える
19702 参照

java - 外部イテレータと内部イテレータ

Java の外部イテレータと内部イテレータとは何ですか?

0 投票する
47 に答える
2829514 参照

python - "yield" キーワードは何をしますか?

yieldPythonでのキーワードの使用は何ですか? それは何をするためのものか?

たとえば、私はこのコード1を理解しようとしています:

そして、これは呼び出し元です:

メソッド_get_child_candidatesが呼び出されるとどうなりますか? リストは返されますか? 単一の要素?また呼ばれますか?後続の通話はいつ停止しますか?


1. このコードは Jochen Schulz (jrschulz) によって書かれました。彼はメートル空間用の優れた Python ライブラリを作成しました。これは完全なソースへのリンクです: Module mspace
0 投票する
13 に答える
25167 参照

python - 2 つの Python イテレータをマージするにはどうすればよいですか?

listaとitertools.countobject (つまり、無限値ジェネレーター) の2 つの反復子があります。これら 2 つをマージして、2 つの yield 値を交互に返すイテレータを作成したいと思います。

これを行う最も簡単で簡潔な方法は何ですか?

0 投票する
10 に答える
19268 参照

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()の目を見張るような議論に照らして、誰かがこれについてプロファイリングを行っているかどうかに特に興味があります。(代替リンク)

0 投票する
8 に答える
1610 参照

c++ - std::copyを使用して任意の数の値を読み取る方法は?

私はこれと反対の行動をコード化しようとしています:

次のようになります。

しかし、私は 'end' イテレータに固執しています。入力インターレータは std::advance を使用できず、同じソースで 2 つのストリームを使用することもできません...

これを解決するエレガントな方法はありますか? もちろん、for ループを使用することもできますが、もっといいものがあるかもしれません :)