c++ - 使用 foreach 循环 C++ 更新 std::list 中的每个值

标签 c++ loops c++11 foreach

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

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);

关于c++ - 使用 foreach 循环 C++ 更新 std::list 中的每个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26622385/

相关文章:

c++ - Qt 和正则表达式

arrays - Swift 逐个循环遍历数组,中间有停顿

loops - 离开循环后指针变为 nil

c++ - 如何将对象的所有权传递给函数外部

c++ - 重载比较运算符失败 [C++11]

c++11 - is_defined constexpr 函数

c++ - 关于使用 std::vector<class type Foo> 作为原始数组 Foo []

c++ - 标准 vector push_back' : 2 overloads have no legal conversion for 'this' pointer error

c++ - 在 C++ 中定义全局常量

javascript - 如何在 vue.js 对象内循环数组