BOOST_FOREACH和一个向量

时间:2012-12-24 14:07:44

标签: c++ boost boost-foreach

我有一个场景矢量vector<Scene>。迭代元素的正确方法是什么?作为参考?

例如:

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

宏是否会在向量上复制每次迭代的场景,还是在幕后使用引用?

与此有什么不同:

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

3 个答案:

答案 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;,永远不要复制。