2012-02-29 13 views
1

イテレータ(STLまたはJavaスタイル)がQMapまたはQListに対して有効かどうかをチェックする方法はありますか?イテレータがQTコンテナに有効であることを確認します。

ありがとうございます。

+1

いいえ............. –

+0

...何が起こったのですか? –

+0

別のスレッドでコンテナを変更した後。私はそれに対して外部のフラグを立てることができることを知っていますが、私はカプセル化された機能を使うことができると推測しています。 –

答えて

2

いいえ。イテレーターのポイントは、いずれもコンテナのから独立しています。です。コンテナの反復子やコンテナの要素への参照が(コンテナの反復子/参照無効化仕様の対象となる)他に誰もまだ存在しない場合は、コンテナの変更のみを行うようにしてください。

+0

私の質問の全体的なポイントは、イテレータの状態が暗黙のうちにコンテナに依存していることです。 QTライブラリは、イテレータが生きている間にコンテナをコピーすることによってこの問題を部分的に解決します(クローニング)。しかし、どこにでも役立つものではありません。 –

+0

@DmitryKachko:OK、私はSTLスタイルのイテレータに私の答えを制限するべきです。 Javaイテレータがコンテナといくつかの接続を運ぶように見えます。いずれにしても、コンテナ*のドキュメントをチェックする必要があります。コンテナがすべてのイテレータを追跡し、無効になったときにそれらを通知するとは思いません。 –

+0

ただし、有効性を確認するなどの方法があります。奇妙なことに、そのようなメソッドは存在しませんが、私は例外や何かを上げるためにいくつかのトリックがあるかもしれないと頼んでいます。 –

関連する問題