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

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

12
Javaでリストの逆のリストビューを取得するにはどうすればよいですか?
(List#sublistリストにサブリストビューを提供するのと同じような方法で)リストのリストビューを反転させたい。この機能を提供する機能はありますか? リストのコピーを作成したり、リストを変更したりしたくありません。 この場合でも、リストに少なくともリバースイテレータを取得できれば十分です。 また、私はこれを自分で実装する方法を知っています。私はちょうどJavaがすでにこのようなものを提供しているかどうかを尋ねています。 デモの実装: static <T> Iterable<T> iterableReverseList(final List<T> l) { return new Iterable<T>() { public Iterator<T> iterator() { return new Iterator<T>() { ListIterator<T> listIter = l.listIterator(l.size()); public boolean hasNext() { return listIter.hasPrevious(); } public T next() { return listIter.previous(); } public void remove() { listIter.remove(); } }; } …

7
ジェネレータから1つのアイテムだけを選択する方法(Python)?
次のようなジェネレーター関数があります。 def myfunct(): ... yield result この関数を呼び出す通常の方法は次のとおりです。 for r in myfunct(): dostuff(r) 私の質問、好きなときにいつでもジェネレータから要素を1つだけ取得する方法はありますか?たとえば、私は次のようなことをしたいと思います: while True: ... if something: my_element = pick_just_one_element(myfunct()) dostuff(my_element) ...


5
C ++ STLベクトル:インデックスからイテレーターを取得しますか?
そのため、stlベクトルの要素にindex []でアクセスする一連のコードを記述しましたが、今度は、ベクトルのチャンクのみをコピーする必要があります。それはvector.insert(pos, first, last)私が欲しい関数のように見えます... intとして最初と最後しか持っていないことを除いて。これらの値のイテレータを取得できる良い方法はありますか?
200 c++  stl  vector  iterator 

7
C ++ 11でメンバー以外の開始関数と終了関数を使用する理由
すべての標準コンテナには、そのコンテナのイテレータを返すためのbeginおよびendメソッドがあります。ただし、C ++ 11には、と呼ばれる無料の関数と、およびのメンバー関数を呼び出すことが明らかに導入されstd::beginてstd::endいます。だから、書く代わりにbeginend auto i = v.begin(); auto e = v.end(); あなたは書くでしょう auto i = std::begin(v); auto e = std::end(v); Herb Sutterは、彼の講演「Writing Modern C ++」で、コンテナーの開始イテレーターまたは終了イテレーターが必要な場合は常に無料の関数を使用する必要があると述べています。しかし、なぜあなたがそうしたいのかについて彼は詳細には触れません。コードを見ると、1つの文字をすべて節約できます。したがって、標準のコンテナに関する限り、無料の関数はまったく役に立たないようです。Herb Sutterは、非標準のコンテナにはメリットがあると述べましたが、ここでも詳細には触れませんでした。 では、問題は、の無料の関数バージョンが正確に何でstd::beginありstd::end、対応するメンバー関数のバージョンを呼び出す以外に何をするのか、そしてなぜそれらを使用したいのでしょうか?




16
JavaのIteratorがIterableではないのはなぜですか?
Iteratorインターフェースが拡張されないのはなぜIterableですか? iterator()この方法は、単純に返すことができますthis。 それは意図的なものですか、それともJavaのデザイナーの見落としでしょうか? 次のようなイテレータでfor-eachループを使用できると便利です。 for(Object o : someContainer.listSomeObjects()) { .... } where listSomeObjects()はイテレータを返します。
178 java  iterator  iterable 


2
iterator-> secondはどういう意味ですか?
C ++では、タイプは何std::map<>::iteratorですか? itタイプのオブジェクトにはを返すstd::map<A,B>::iteratorオーバーロードがoperator ->ありstd::pair<A,B>*、にstd::pair<>はメンバーfirstとsecondメンバーがあることを知っています。 しかし、これらの2つのメンバーは何に対応し、マップに格納されている値にアクセスする必要があるのはなぜit->secondですか?
157 c++  stl  iterator 


8
反復中のstd :: setからの要素の削除
セットを調べて、事前定義された基準を満たす要素を削除する必要があります。 これは私が書いたテストコードです: #include <set> #include <algorithm> void printElement(int value) { std::cout << value << " "; } int main() { int initNum[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; std::set<int> numbers(initNum, initNum + 10); // print '0 1 2 3 4 5 6 7 …

6
Pythonはイテレータの振る舞いとnext(iterator)をリストします
考慮してください: >>> lst = iter([1,2,3]) >>> next(lst) 1 >>> next(lst) 2 したがって、イテレータの前進は、予想通り、同じオブジェクトを変更することによって処理されます。 これが事実であると私は期待します: a = iter(list(range(10))) for i in a: print(i) next(a) 毎秒の要素をスキップするにnextは:への呼び出しでイテレータを1回進める必要があります。次に、ループによって行われる暗黙の呼び出しでもう一度繰り返す必要があり、この2番目の呼び出しの結果がに割り当てられiます。 そうではありません。ループは、リスト内のすべての項目をスキップせずに印刷します。 私が最初に思ったのは、ループiterは渡されたものを呼び出すために発生する可能性があり、独立したイテレータを提供する可能性があるということでした。これはそうではありませんiter(a) is a。 では、なぜnextこの場合に反復子を進めないように見えるのでしょうか?

6
独自のイテレーターを作成する
私はC ++を習得しようとしているので、この質問が基本的な知識の欠如を示している場合は許してください。 私が作成したクラスのイテレータを作成する方法を理解するための助けが欲しい。 ポイントのコンテナーを持つクラス 'Shape'があります。Shapeを参照し、Shapeの位置を定義するクラス「Piece」があります。ピースはシェイプを持たず、シェイプを参照するだけです。 ピースがポイントのコンテナのように見えるようにしたいのですが、それは参照するシェイプと同じですが、ピースの位置のオフセットが追加されています。 ピースがコンテナそのものであるかのように、ピースのポイントを反復処理できるようにしたい。私は少し読んでみましたが、私を助けてくれるものは何も見つかりませんでした。私はどんなポインタにもとても感謝しています。
141 c++  iterator 

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