使用foreach循环C++更新std::列表中的每个值

Update each value in a std::list with a foreach loop C++

本文关键字:列表 使用 循环 C++ 更新 std foreach      更新时间:2023-10-16

我在C++中有一个std::list,我正在尝试使用for(Type t : list)操作来更新每个对象的值。所以我有一个名为球的列表,每个球都有一个位置。我的循环代码是:

for(OpenGLView::AssetInstance ball : balls)
            ball.position = calculateBallPosition(ball);

其中calculateBallPosition取球并根据经过的时间返回其新位置。

我遇到的问题是,列表中元素的值似乎没有更新。当我在循环运行后检查它们的值时,它和以前一样。我猜我的错误在于理解了这个循环的工作方式,但我还没能弄清楚如何修复它。

您要复制原始对象,请使用引用

for(OpenGLView::AssetInstance& ball : balls)
            ball.position = calculateBallPosition(ball);

或者简单的

for( auto& ball : balls)
            ball.position = calculateBallPosition(ball);