2

シーンのベクトルがありvector<Scene>ます。参照として、またはそうでない場合でも、要素を反復処理する正しい方法は何ですか?

例:これ:

BOOST_FOREACH(Scene scene, mScenes)
{
       .....
}

マクロは、ベクトルの反復ごとにシーンをコピーしますか、それとも舞台裏で参照を使用しますか?

それで、これとは何か違いがあります:

BOOST_FOREACH(Scene& scene, mScenes)
{
       .....
}
4

3 に答える 3

9

BOOST_FOREACH値、参照、または定数参照によって、あなたが彼に言ったとおりに動作します

于 2012-12-24T14:10:23.803 に答える
5

最初の例では、それぞれをコピーしますScene。ほとんどの場合、2番目が必要です。最初のものでは、変更することができscene、ベクトルは影響を受けません。ベクトルを変更しない場合は、を使用する必要がありますconst Scene& scene。そうである場合は、を使用してScene &ください。

于 2012-12-24T14:10:32.570 に答える
2

C ++ 11では、BOOST_FOREACHを使用する必要がないことに注意してください(イテレーターのペアを返す一部のブーストライブラリを除く)。

for(const Scene& scene: mScenes){}

BOOST_FOREACHの場合と同じルールが適用されます。おそらく、const&を使用し、まれに&を使用し、コピーしないことをお勧めします。

于 2012-12-24T14:23:56.140 に答える