タグ付けされた質問 「iterator」

イテレータは、オブジェクト指向のプログラミングパターンであり、コレクションを通過し、物理メモリ内の実際の実装やオブジェクトアドレスに依存しません。これは、ギャングオブフォーの行動設計パターンの1つです。

5
node.jsのオブジェクトキーを反復する
JavaScript 1.7以降には、これを可能にするIteratorオブジェクトがあります。 var a={a:1,b:2,c:3}; var it=Iterator(a); function iterate(){ try { console.log(it.next()); setTimeout(iterate,1000); }catch (err if err instanceof StopIteration) { console.log("End of record.\n"); } catch (err) { console.log("Unknown error: " + err.description + "\n"); } } iterate(); node.jsにこのようなものはありますか? 今私は使っています: function Iterator(o){ /*var k=[]; for(var i in o){ k.push(i); }*/ var k=Object.keys(o); …


11
「for」ループを使用してC ++ベクトルを反復処理する
C ++言語は初めてです。私はベクトルを使い始めており、インデックスを介してベクトルを反復処理するすべてのコードで、forループの最初のパラメーターは常にベクトルに基づくものであることに気づきました。Javaでは、ArrayListを使用して次のようなことを行う場合があります。 for(int i=0; i < vector.size(); i++){ vector[i].doSomething(); } C ++でこれが表示されない理由はありますか?それは悪い習慣ですか?

3
イテレーターとリステレーターの違いは?
Iterator ite = Set.iterator(); Iterator ite = List.iterator(); ListIterator listite = List.listIterator(); Iteratora Setまたはa Listまたはをトラバースするために使用できますMap。しかし、ListIteratorをトラバースするためにのみ使用Listでき、をトラバースすることはできませんSet。どうして? 主な違いは、イテレータでは一方向にしか移動できないが、両方向ListIteratorには移動できることです。他に違いはありますか?そして、ListIterator以上の利点Iterator?


12
Typescriptマップの反復
タイプスクリプトマップを反復処理しようとしていますが、エラーが発生し続け、そのような些細な問題の解決策はまだ見つかりませんでした。 私のコードは: myMap : Map<string, boolean>; for(let key of myMap.keys()) { console.log(key); } そして私はエラーを受け取ります: タイプ 'IterableIteratorShim <[string、boolean]>'は、配列タイプでも文字列タイプでもありません。 完全なスタックトレース: Error: Typescript found the following errors: /home/project/tmp/broccoli_type_script_compiler-input_base_path-q4GtzHgb.tmp/0/src/app/project/project-data.service.ts (21, 20): Type 'IterableIteratorShim<[string, boolean]>' is not an array type or a string type. at BroccoliTypeScriptCompiler._doIncrementalBuild (/home/project/node_modules/angular-cli/lib/broccoli/broccoli-typescript.js:115:19) at BroccoliTypeScriptCompiler.build (/home/project/node_modules/angular-cli/lib/broccoli/broccoli-typescript.js:43:10) at /home/project/node_modules/broccoli-caching-writer/index.js:152:21 at lib$rsvp$$internal$$tryCatch (/home/project/node_modules/rsvp/dist/rsvp.js:1036:16) …

3
最初から最後まで繰り返しながらマップ要素でerase()を呼び出すとどうなりますか?
次のコードでは、マップをループして、要素を消去する必要があるかどうかをテストしています。要素を消去して繰り返し続けても安全ですか、または別のコンテナにキーを収集して、erase()を呼び出すために2番目のループを実行する必要がありますか? map<string, SerialdMsg::SerialFunction_t>::iterator pm_it; for (pm_it = port_map.begin(); pm_it != port_map.end(); pm_it++) { if (pm_it->second == delete_this_id) { port_map.erase(pm_it->first); } } 更新:もちろん、私はこの質問を読んだのですが、関係があるとは思われませんでしたが、私の質問に答えます。
133 c++  stl  iterator 


7
2つの配列を一度に反復する「Rubyの方法」とは
解決すべき問題よりも構文の好奇心のほうが... 同じ長さの2つの配列があり、一度に両方を反復処理します。たとえば、特定のインデックスで両方の値を出力します。 @budget = [ 100, 150, 25, 105 ] @actual = [ 120, 100, 50, 100 ] 私は使用each_indexして配列にインデックスを付けることができることを知っています: @budget.each_index do |i| puts @budget[i] puts @actual[i] end これをよりよくするRubyの方法はありますか?このような何か? # Obviously doesn't achieve what I want it to - but is there something like this? [@budget, @actual].each do |budget, actual| puts …
127 ruby  arrays  iterator 

5
リストを反復する方が、インデックスを付けるよりも速いのはなぜですか?
それが言うADTリストのJavaドキュメントを読む: Listインターフェースは、リスト要素への位置(インデックス)アクセスのための4つのメソッドを提供します。リスト(Java配列のような)はゼロベースです。これらの操作は、一部の実装(LinkedListクラスなど)のインデックス値に比例して時間内に実行される場合があることに注意してください。したがって、呼び出し元が実装を知らない場合は、リストの要素を反復処理する方が、インデックスを作成するよりも通常は望ましい方法です。 これはどういう意味ですか?描かれた結論がわかりません。
125 java  list  iterator 


6
文字列の行を反復する
私はこのように定義された複数行の文字列を持っています: foo = """ this is a multi-line string. """ 私が書いているパーサーのテスト入力として使用したこの文字列。parser-functionはfile-objectを入力として受け取り、それを反復処理します。また、next()メソッドを直接呼び出して行をスキップするので、反復可能ではなく、入力としてイテレータが本当に必要です。file-objectがテキストファイルの行を繰り返すように、その文字列の個々の行を繰り返すイテレータが必要です。もちろん、次のようにすることもできます。 lineiterator = iter(foo.splitlines()) これを行うより直接的な方法はありますか?このシナリオでは、文字列は分割のために1回、次にパーサーによってもう一度トラバースする必要があります。テストケースでは問題ではありません。文字列が非常に短いため、好奇心から質問しています。Pythonにはそのようなもののための非常に多くの便利で効率的なビルトインがありますが、このニーズに合うものは何も見つかりませんでした。
119 python  string  iterator 

7
無限ジェネレーターの式はありますか?
無限要素を生成できる単純なジェネレータ式はありますか? これは純粋に理論的な質問です。ここに「実用的な」答えは必要ありません:) たとえば、有限ジェネレータを作成するのは簡単です。 my_gen = (0 for i in xrange(42)) ただし、無限のものを作成するには、偽の関数で名前空間を「汚染」する必要があります。 def _my_gen(): while True: yield 0 my_gen = _my_gen() 別のファイルで処理を行い、import後で-ing することは考慮されません。 私はそれitertools.repeatがまさにこれを行うことも知っています。それなしでワンライナーソリューションがあるかどうか私は興味があります。

7
Scalaが下向きまたはforループが減少しますか?
Scalaでは、イテレーターを使用して、for次のような昇順でループを実行することがよくあります。 for(i <- 1 to 10){ code } それを10から1にするにはどうしますか?10 to 1(通常の範囲の数学のように)空のイテレータを与えると思いますか? イテレータでreverseを呼び出すことによってそれを解決するScalaスクリプトを作成しましたが、私の意見では良くありません。 def nBeers(n:Int) = n match { case 0 => ("No more bottles of beer on the wall, no more bottles of beer." + "\nGo to the store and buy some more, " + "99 bottles of beer on …

9
2つ以上のコンテナーを同時に反復処理する最良の方法は何ですか
C ++ 11は、コンテナーを反復処理する複数の方法を提供します。例えば: 範囲ベースのループ for(auto c : container) fun(c) std :: for_each for_each(container.begin(),container.end(),fun) ただし、次のようなことを達成するために同じサイズの2つ(またはそれ以上)のコンテナーを反復処理するための推奨される方法は何ですか? for(unsigned i = 0; i < containerA.size(); ++i) { containerA[i] = containerB[i]; }

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.