为函数内的数组元素赋值

时间:2015-09-04 23:34:31

标签: c++ c++11 lambda

一个简单的功能

auto f = [] (const array <GLfloat, 4> a, array <GLfloat, 4> b) {b [2] = a [2] + 5;};

无法按预期工作 - 数组 b 保持不变。

1 个答案:

答案 0 :(得分:4)

因为您通过传递并且只是修改复制的数组,这与外部b无关。你必须通过参考传递:

auto f = [](const array<GLfloat, 4>& a, array<GLfloat, 4>& b) {b[2] = a[2] + 5;};
                                                       ^^^^

您也应该通过引用传递给a,以避免不必要的副本。