|
お返事ありがとうございます。
■No29939 (774RR さん) に返信 > iterator が1つしかないので反復中に反復かけたくなったら破綻するのに > Mutex で保護も無いもんだ > > // こんな感じで iterator が2つ必要な場合に提示コードだとどうにもならない > for (x=c.begin(); x!=c.end(); ++x) { > y=x; > for (advance(y,1); y!=c.end(); ++y) { > // y と x で何かする ... > } > } マルチスレッドは C# で少しいじった程度なので理解できませんでした。 この辺りは更に勉強して理解できるように努力します。
■29949(あんどちん さん)に返信 > 774RRさんのコードのようにイテレータ更新を別メソッドにした方が汎用性が上がると思いますよ。 > 中身の取得をすると更新されては同じ位置のデータを2回取ることが難しくなります。イテレータ更新はfor文の中で行うでしょうからプログラム行数もまず変わりませんし。 foreach 的な使用しか想定していなかったので、コード量を減らす為に中身の取得とイテレータ更新が一緒になっています。 確かに汎用性に問題がありますね;
> List<T>のインスタンスをローカルに生成していませんか? > その場合List<T>内のイテレータもフレームポインタからのオフセットで参照できるので、イテレータをローカル変数で宣言して処理する場合とほとんど変わらない実行コードが出来ると思います。 まさにその通りです。 経験と知識の浅さが丸出しですね...
|