2011-02-05 8 views

答えて

3

それは返されたコンテナのコピーを作成し、それを使用します。

関連(Qt foreach keywordのドキュメントを参照してください):のQtのforeach常にコピーコンテナので

  • を、それが最高(コピー・オン・ライトされている)QT-容器や小さなSTLコンテナのいずれかで使われています。
  • Boost's foreachこれをよりうまく処理し、必要な場合を除きコピーを避けます。
+0

を読んでください。一方、コピーするとループ内の元のコンテナを変更できます何も壊すことなくそれともブーストでも安全ですか?それを実際に使ったことはありません。 –

+0

@Sergey:True、しかし、私の経験では、もっと一般的なケースは、何かを修正する(つまり反復する)、またはオリジナルを修正したくないコンテナ。 – Macke

+1

trueですが、Qtではコンテナがループ内で暗黙的に変更されることがあります。例えば、ループ内にシグナルを出すメソッド呼び出しがいくつかあり、そのシグナルに接続されたスロットがコンテナを変更します。これは、マルチスレッドの場合と同じくらい悪くはありません。なぜなら、すべてのスレッドが1つのスレッド内で実行されているからですが、メソッド呼び出しの順序はそれほど明白ではありません。 –

関連する問題