BOOST_FOREACH
behaves exactly as you tell him, by value, reference or const reference
BOOST_FOREACH and a vector
-
12-12-2021 - |
Domanda
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)
{
.....
}
Soluzione
Altri suggerimenti
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.