【问题标题】:BOOST_FOREACH and a vectorBOOST_FOREACH 和一个向量
【发布时间】:2012-12-24 14:07:43
【问题描述】:

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

例如:

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

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

所以和这个有什么不同:

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

【问题讨论】:

    标签: c++ boost boost-foreach


    【解决方案1】:

    BOOST_FOREACH 的行为与您告诉他的完全一样,按值、引用或 const 引用

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        请注意,对于 C++11,您不需要使用 BOOST_FOREACH(一些返回一对迭代器的 boost 库除外)。

        for(const Scene& scene: mScenes){}
        

        适用与 BOOST_FOREACH 相同的规则:您很可能希望使用 const &,很少使用 &,并且从不复制。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-11-17
          • 2011-11-09
          • 1970-01-01
          • 2018-10-08
          • 1970-01-01
          • 2021-12-26
          • 1970-01-01
          相关资源
          最近更新 更多