문제

I have a vector of Scenes, vector<Scene>. What is the correct way to iterate over the elements, as reference or not?

For example this:

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

Does the macro copy the Scene for each iteration over the vector, or does it use a reference behind the scenes?

So is it any different from this:

BOOST_FOREACH(Scene& scene, mScenes)
{
       .....
}
도움이 되었습니까?

해결책

BOOST_FOREACH behaves exactly as you tell him, by value, reference or const reference

다른 팁

Your first example does copy each Scene. Most likely, you want the second. With the first, you can modify scene and the vector will be unaffected. If you're not modifying the vector, you should use const Scene& scene. If you are, use Scene &.

Note that with C++11 you don't need to use BOOST_FOREACH (excepted with some boost libs that return a pair of iterators).

for(const Scene& scene: mScenes){}

The same rules apply as for BOOST_FOREACH : you most likely want to use const &, rarely &, and never copy.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top