BOOST_FOREACH and a vector

BOOST_FOREACH and a vector

本文关键字:vector and FOREACH BOOST      更新时间:2023-10-16

我有一个场景向量, vector<Scene>。是否正确地迭代元素的正确方法是什么?

例如:

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

宏是在向量上复制每个迭代的场景,还是在幕后使用参考?

所以与此不同:

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

BOOST_FOREACH的行为与您所告诉他的行为,通过价值,参考或const reference

您的第一个示例 dis 复制每个Scene。最有可能的是,您想要第二个。使用第一个,您可以修改scene,并且向量将不受影响。如果您没有修改向量,则应使用const Scene& scene。如果是,请使用Scene &

请注意,使用C 11,您不需要使用BOOST_FOREACH(除了返回一对迭代器的一些Boost Libs除外)。

for(const Scene& scene: mScenes){}

适用于BOOST_FOREACH的相同规则:您很可能想使用const&amp;,很少&amp;,并且永远不会复制。