5

C +では、シーケンスへの書き込みにイテレータを使用できます。最も簡単な例は次のとおりです。

vector<int> v;
for (vector<int>::iterator it = v.begin(); it!=v.end(); ++it) {
    *it = 42;
}

もっと複雑なものが必要です。後で使用できるように、イテレータをクラスメンバーとして保持してください。しかし、Javaイテレータからこの動作を取得する方法がわかりません。

Javaに書き込み可能なイテレータはありますか?
そうでない場合、それらを置き換えるものは何ですか?

4

3 に答える 3

8

ListIteratorで取得できますList#listIterator())には、現在繰り返されているインデックスでアイテムをそれぞれ挿入および置換できるメソッドがありますadd()set()これは、Javaで考えることができる唯一の「書き込み可能なイテレータ」です。

私はC++を知らないので、それが与えられたC++コードの正確な置き換えであるかどうかはわかりません。

于 2010-05-10T12:35:14.887 に答える
2

配列はインデックスによって直接かつ迅速にアクセスできるため、反復子オブジェクトは実際には必要ありません。そのクラス メンバに配列のインデックスを保存するだけで十分ではないでしょうか。これにより、配列の値の読み取りと書き込みが許可されます。

PS: 配列の自動的に成長するセットである ArrayList を使用し、ListIterator を Balus として使用して、iterator-object-approach を使用することができます。

于 2010-05-10T12:41:19.767 に答える
0

List(または、のような他のコレクションSet)または配列が必要なように見えます。

また、コンテンツを変更可能にすることもできます。整数の場合はばかげているように見えますが、例を続けます

for (MutableInteger i : CollectionOfMInts) i.setTo(42);
于 2010-05-10T12:43:51.073 に答える