我正在用C ++编写一个将向量中所有数字加倍的函数。我的代码是:
std::vector<int> maps(const std::vector<int> & values) {
for (unsigned i = 0; i < values.size(); i++)
{
values[i] = values[i] * 2;
}
return values;
}
但这会导致错误:
错误:由于函数'operator []'返回const值,因此无法分配返回值
values [i] = values [i] * 2;
我不理解此错误或我的代码有什么问题。
答案 0 :(得分:3)
您正在将向量传递为const
,并试图对其进行修改。如果要修改const
限定词。
答案 1 :(得分:2)
我不明白此错误...
该错误表明分配values[i] = ...
是非法的
或者我的代码有什么问题。
您通过values
作为const
向量。这样一来,maps
中的代码就可以在索引values
处读取i
,而不会写回新值。
您可以通过以下方法修复该问题:首先复制阵列,然后对副本进行修改。可以通过从const
的签名中删除&
和maps
来隐式完成此操作:
std::vector<int> maps(std::vector<int> values)
现在values
是按值传递的,C ++在输入maps
之前会为您制作一个副本。