我有一个场景矢量vector<Scene>
。迭代元素的正确方法是什么?作为参考?
例如:
BOOST_FOREACH(Scene scene, mScenes)
{
.....
}
宏是否会在向量上复制每次迭代的场景,还是在幕后使用引用?
与此有什么不同:
BOOST_FOREACH(Scene& scene, mScenes)
{
.....
}
答案 0 :(得分:9)
BOOST_FOREACH
的行为完全按照你告诉他的方式,通过值,引用或const引用
答案 1 :(得分:5)
您的第一个示例 复制每个Scene
。最有可能的是,你想要第二个。使用第一个,您可以修改scene
,矢量将不受影响。如果您不修改矢量,则应使用const Scene& scene
。如果是,请使用Scene &
。
答案 2 :(得分:2)
请注意,使用C ++ 11,您不需要使用BOOST_FOREACH(除了一些返回一对迭代器的boost库)。
for(const Scene& scene: mScenes){}
同样的规则适用于BOOST_FOREACH:你很可能想要使用const&amp;,很少和&amp;,永远不要复制。